【发布时间】:2019-12-13 01:37:36
【问题描述】:
我对前端很陌生,无法找到解决这个简单问题的明确解决方案。 在 Visual 2017 c# ASP.NET Framework MVC 项目中,对于只有一个提交按钮的单个页面,该按钮已用于更新我的模型 totalInfo 的某些字符串,我想从选定的值更新我的模型的整数属性 ModelltypeForView n 单选按钮。
我了解到我可以通过 AJAX 调用更新我的控制器模型,但是我找不到更新我的视图模型的方法,我必须错过一些简单但对初学者来说并不明显的东西。
这是我的 MVC 的主要部分。
我知道由于我的控制器的 SettModelltype 的返回类型以及我的视图的 ajax 和 foreach 循环导致的问题,所以基本上:我该如何完成这段代码?这个问题甚至可以在没有任何局部视图的情况下解决吗?
非常感谢您的宝贵时间。
// Model TotalInfoModell.cs
public class TotalInfoModell
{
public List<Modelltype> Modelltyper { get; set; }
public int ModelltypeForView { get; set; }
}
public class Modelltype
{
public int MTIndex { get; set; }
public string MTName { get; set; }
public bool MTSelected { get; set; } //? useless?
}
// Controller MainController.cs
static TotalInfoModell _totalInfo;
[HttpGet]
public ActionResult Main()
{
if (_totalInfo == null)
{
_totalInfo = new TotalInfoModell();
}
return View(_totalInfo);
}
[HttpPost]
public ActionResult SettModelltype(TotalInfoModell totalInfoFraView)
{
_totalInfo.ModelltypeForView = totalInfoFraView.ModelltypeForView;
for (int i = 0; i < _totalInfo.Modelltyper.Count; i++)
{
_totalInfo.Modelltyper[i].MTSelected = (i == _totalInfo.ModelltypeForView);
} /// Could be useless
return RedirectToAction("Main"); //????
}
// View Main.cshtml
@foreach (var modelltype in Model.Modelltyper)
{
@Html.RadioButtonFor(i => modelltype.MTIndex == Model.ModelltypeForView, modelltype.MTIndex, new { @class = "MTSelected" }) // ????
@modelltype.MTName<br />
}
...
<script>
$(function () {
$('.MTSelected').change(function () {
var viewModel = {
"ModelltypeForView": $('.MTSelected:checked').val(),
};
$.ajax({
url: '@Url.Action("SettModelltype", "Main")',
data: viewModel,
type: 'POST',
success: function (data) {
},
error: function (xhr) {
alert("It didn't work");
}
}).done(function (data) {
alert("Done");
$('#Id').val(data.ModelltypeForView); //??? Should return totalInfoModell
});
});
});
</script>
【问题讨论】:
标签: asp.net-mvc visual-studio model radio-button asp.net-ajax