我对 ASP.NET MVC html 帮助程序(如 TextBoxFor()、HiddenFor() 等)有问题。如果我有一个模型(如带有字符串成员 Name 的 Employee )并执行 Html.TextBoxFor(p => p.Name),则为我认为 ASP.NET MVC 是错误的会一直用员工姓名中的价值?因为事实并非如此。 ASP.NET 将覆盖该绑定并使用 POST 中的内容。
例如,假设我有以下代码:
Model
namespace MvcApplication2.Models
{
public class Company
{
public string Name { set; get; }
public List<Employee> Employees { set; get; }
}
public class Employee
{
public string Name { set; get; }
}
}
控制器
namespace MvcApplication2.Controllers
{
public class HomeController : Controller
{
public ActionResult Company(string Name)
{
return View(new Company {
Name = Name,
Employees = new List<Employee> {
new Employee { Name = "Ralph" },
new Employee { Name = "Joe" } }
});
}
}
}
主页/Company.cshtml
@using MvcApplication2.Models;
@model Company
<h2>Company's Name: @Model.Name</h2>
@foreach (Employee emp in Model.Employees)
{
Html.RenderPartial("Employee", emp);
}
主页/Employee.cshtml
@model MvcApplication2.Models.Employee
<b>Employee's Name: </b> @Html.TextBoxFor(p => p.Name);
当我点击相对 URL“Home/Company?Name=MSFT”时,我希望 Employee.cshtml 在文本框中呈现“Ralph”和“Joe”,但它却为两个文本框呈现 MSFT。我需要做什么才能让“Ralph”和“Joe”出现在文本框中?我是否必须确保我的 POST 和 GET 变量在视图模型的所有层(在本例中为 Company 和 Employee 类)中不会发生冲突?这看起来很愚蠢。一定有一个简单的解决方法,对吗?
Here's a screenshot of the result: