asp.net - MVC Razor - 影响 TextBoxFor 和模型属性值的查询字符串

标签 asp.net asp.net-mvc-3 razor

这有点奇怪(至少对我来说),所以要做好准备。我有一个简单的对象

public class User
{
  public FirstName { get; set; }
  public LastName { get; set; }
}

还有一个非常简单的 View :

@Model User
@{
    Layout = null;
}
@Html.TextBoxFor(x => x.FirstName)
@Html.Raw(Model.FirstName)

和 Controller :

public ActionResult GetUserInfo(Guid id, string firstName = "")
{
  User user;
  /* ... lookup the user instance ... */
  return View(user);
}

我传递的模型的 FirstName =“John”和 LastName =“Doe”。当我导航到/Users/{Id} 时,文本框和 Html.Raw 值的值为“John”。当我导航到/Users/{Id}?firstName= 时,文本框的值为空,Html.Raw 输出的值为“John”。当我导航到/Users/{Id}?firstName=Tom 时,文本框的值为“Tom”,Html.Raw 的值为“John”。

我已经调试了 Controller 和 View 。进入 View 的模型具有正确的属性。我的问题:

为什么会发生这种情况?我以前从未见过这种情况,也无法用其他类型的对象、 View 等重现它。

我正在使用 .NET 4.5 和 MVC 3。

最佳答案

经过几个小时的搜索并在这里发布后,我发现了一个几乎相同的 stackoverflow 问题。

MVC4 TextBoxFor overwritting model property

总结Aviran Cohen根据链接帖子中的答案,可以通过将行 ModelState.Clear(); 添加到受影响的 Controller 操作的开头来解决此问题:

public ActionResult GetUserInfo(Guid id, string firstName = "")
{
  ModelState.Clear();
  User user;
  /* ... lookup the user instance ... */
  return View(user);
}

关于asp.net - MVC Razor - 影响 TextBoxFor 和模型属性值的查询字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15931118/

相关文章:

c# - ASP :Image with Link

c# - JavaScript 函数阻止 C# 函数被执行?

ASP.NET MVC - 如何将子站点 (ASP.NET) 添加到我的应用程序?

asp.net - 生成动态 Css

asp.net-mvc-3 - 部分 View : "The model item passed into the dictionary is of type"

c# - 如果使用 Razor MVC3 在 div 标记内声明

javascript - 为什么点击div不自动点击tab

c# - Razor View 引擎中的 Html.Partial

asp.net-mvc - HTML.Raw 的 MVC @helper 错误

c# - DbContext 可以组合而不是继承吗?