我想制作一个视图模板,该模板将在几个控制器中使用。
我考虑使用@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()
它仍然可以使用吗?
答案 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")
}
}
话虽如此,这是一个非常差的设计,我建议你找到一种不使用通用模型的方法。