给出这个简单的模型:
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
public Person(string name, int age)
{
this.Name = name;
this.Age = age;
}
public Person()
{ }
internal void Save()
{
}
}
使用此cshtml
:
<fieldset>
<legend>Person</legend>
Age of @Html.DisplayFor(m=> m.Name) :
@Html.TextBoxFor(m=> m.Age)
<p>
<input type="submit" value="Save" />
</p>
</fieldset>
此Controller
显示并保存:
public class HomeController : Controller
{
public ActionResult Edit()
{
return View(new Person(name: "Test", age: 1));
}
[HttpPost]
public ActionResult Edit(Person p)
{
p.Save();
ViewBag.Message = "Did it";
return View(p);
}
}
通过这个例子,用户会看到用户的名字和年龄的输入,非常像这样:
在这种情况下,因为我使用DisplayFor<T>
来显示其Name
属性不会回发到Edit
类中的Person
。
我可以通过Name
Controller
绕过这个问题,但看起来这不是正确的方法(因为你在源代码中有两次信息)。
那么,显示属性并将其发回{{1}}的正确/推荐/常识方式是什么?
答案 0 :(得分:0)
使用HiddenFor
没有任何问题 - 事实上,这可能是你应该做的。如果您还使用EditorFor
或类似的东西会很奇怪,但由于这是您指示您希望将数据发布到该操作的唯一地方,因此您完全清楚这样做。