【发布时间】:2021-06-14 00:55:21
【问题描述】:
我正在通过 ajax 调用向视图上的控制器发送一些信息。控制器将发布数据绑定到视图模型,如下所示:
UserController.cs
[HttpPost]
public ActionResult UserInfo(UserPositionVM userposvm)
{
//Check if user already exists in the database.
int? user_id = userposvm.User.userid;
var userindb = db.Users.Where(x => x.userid == user_id).FirstOrDefault();
/If the user does exist in the database, assign that User model to the view model.
if (userindb != null)
userposvm.User = userindb;
userposvm.User.Office = 3;
return PartialView(userposvm);
}
还有我的视图模型...
UserPosition.cs
public class UserPositionVM
{
public Users User { get; set; }
public Positions Position { get; set; }
}
对于视图,我有这个:
AssignUser.cshtml
...
...
...
@Html.TextBoxFor(model => model.User.Office, new { @readonly = "readonly", @class = "form-control"})
@Model.User.Office
...
...
...
有趣的是,TextBoxFor 不填充值 (3),但 @Model.User.Office 填充。经过一番研究,我发现它与 ModelState 有关。但是,我似乎无法在我的控制器发布方法中更新 ModelState。
我尝试在函数开始时使用 ModelState.Clear(),以及在返回 PartialView() 之前使用 UpdateModel(userposvm.User)。我看到了另一篇与我类似的帖子 (stackoverflow.com/questions/10248757),但它已过时,我无法再访问其中一个答案中的博客。
我该如何解决这个问题?此外,在控制器内编辑模型值,然后将其发送回视图的最佳方法是什么?
【问题讨论】:
-
你的 javascript/ajax 代码是什么?
-
您正在将复杂模型传递给控制器。您必须在方法中指定如何处理此请求。
标签: c# asp.net .net asp.net-mvc asp.net-mvc-5