c#mvc:如何使用TextBoxFor加入Generic View?

时间:2016-12-05 19:26:31

标签: c# asp.net-mvc

我想制作一个视图模板,该模板将在几个控制器中使用。 我考虑使用@Html.TextBoxFor()加入通用视图。有可能吗?

如果我有视图标准视图:

@model Person
@using (Ajax.BeginForm("Add", "Person", new AjaxOptions() { UpdateTargetId = "iUG2" }))
{
   @Html.TextBoxFor( x=>x.name )
   @Html.TextBoxFor( X=>x.surname )
}

@model Address
@using (Ajax.BeginForm("Add", "Address", new AjaxOptions() { UpdateTargetId = "iUG2" }))
{
   @Html.TextBoxFor( x=>x.Street )
   @Html.TextBoxFor( X=>x.City )
}

如何转换通用视图?

class Tab
{
   public string Method { get; set; }
   public string Controller { get; set; }
}

@model <T>
@using (Ajax.BeginForm( ViewBag.Tab.Method, ViewBag.Tab.Controller, new AjaxOptions() { UpdateTargetId = "iUG2" }))
{
   @Html.TextBoxFor( x=>T.?? )
   @Html.TextBoxFor( X=>T.?? )
}

如果我使用泛型类型,@Html.BeginForm()它仍然可以使用吗?

1 个答案:

答案 0 :(得分:1)

它没有真正为此设置。你可能需要做多个if来完成这项工作......这是未经测试的:

@model <T>
@using (Ajax.BeginForm( ViewBag.Tab.Method, ViewBag.Tab.Controller, new AjaxOptions() { UpdateTargetId = "iUG2" }))
{
   if (Model is Person)
   {
       @Html.TextBox("Name")
       @Html.TextBox("Surname")
   }
   if (Model is Address)
   {
       @Html.TextBox("Street")
       @Html.TextBox("City")
   }
}

话虽如此,这是一个非常差的设计,我建议你找到一种不使用通用模型的方法。