我在MVC项目中使用自定义模板,以不同方式显示各种对象类型。有些在工作,而另一些则没有!对于任何不起作用的东西,它们将被传递到我的object.cshtml自定义模板中,而不是它们自己的模板中。
这是一个例子。在此示例中,我正在创建一个地址查找类型,该类型要使用查找按钮呈现地址和邮政编码字段的第一行。
我的ViewModel具有以下内容:
namespace MyProject.Views
{
public class AddressLookup
{
public string Postcode { get; set; }
public string FirstLine { get; set; }
}
public class RegistrationViewModel
{
[DisplayName("Address Lookup")]
public AddressLookup addressLookup { get; set; }
}
}
我的视图如下:
@model RegistrationViewModel
<div class="well" id="form-well">
<h2>Register New User</h2>
<h3>Step 1 of 3 - Login Details</h3>
@using (Html.BeginForm("RegisterNewUser", "Controller", FormMethod.Post, new { @class = "form-horizonal" }))
{
@Html.AntiForgeryToken();
@Html.EditorForModel(Model);
@Html.ValidationSummary();
<div style="padding: 15px;" class="form-group col-md-offset-3">
<input type="submit" value="Next" class="btn btn-lg btn-success" />
</div>
}
</div>
我的AddressLookup.cshtml看起来像这样:
@using MyProject
@model AddressLookup
@Html.TextBoxFor(x => x.FirstLine)
@Html.TextBoxFor(x => x.Postcode)
<p>
<button class="btn btn-info" type="button" onclick="alert('lookup');" value="Add new address">Lookup address</button>
</p>
但是在调试时,它运行的是EditorTemplates文件夹中object.cshtml中的代码,而不是AddressLookup中的代码。
有什么想法吗?
谢谢 西蒙
答案 0 :(得分:0)
在我的视图模型中向属性添加UIHint是可行的(尽管我不完全理解为什么)。
namespace MyProject.Views
{
public class AddressLookup
{
public string Postcode { get; set; }
public string FirstLine { get; set; }
}
public class RegistrationViewModel
{
[DisplayName("Address Lookup")]
[UIHint("AddressLookup")]
public AddressLookup addressLookup { get; set; }
}
}
谢谢 西蒙