我最近开始使用viewModel。这是我正在使用的视图模型:
public class ContentViewModel
{
public Content Content { get; set; }
public bool UseRowKey {
get {
return Content.PartitionKey.Substring(2, 2) == "05" ||
Content.PartitionKey.Substring(2, 2) == "06";
}
}
public string TempRowKey { get; set; }
}
我更改了我的剃须刀视图:
@model WebUx.Content
<div class="colx2-left">
<label for="complex-fr-url" class="required">Order</label>
@Html.TextBoxFor(model => model.Order)
</div>
自:
@model WebUx.Areas.Admin.ViewModels.Contents.ContentViewModel
<div class="colx2-left">
<label for="complex-fr-url" class="required">Order</label>
@Html.TextBoxFor(model => model.Content.Order)
</div>
现在我的视图失败,并显示以下消息:
编译器错误消息: CS0411:方法的类型参数 System.Web.Mvc.Html.InputExtensions.TextBoxFor TModel,TProperty> (System.Web.Mvc.HtmlHelper
, System.Linq.Expressions.Expression <TModel,TProperty>>) 无法从使用情况中推断。尝试显式指定类型参数。
有人可以给我建议我应该做什么吗?
根据经验,我确保我的视图/模板仅引用它正在处理的模型中的属性,而不是它正在处理的属性。
更改前的第一次尝试是正确的。
因此,我会将您的视图更改为以下内容:
@model WebUx.Areas.Admin.ViewModels.Contents.ContentViewModel
@Html.EditorFor(model => model.Content)
并利用您现有的模板:
@model WebUx.Content
<div class="colx2-left">
<label for="complex-fr-url" class="required">Order</label>
@Html.TextBoxFor(model => model.Order)
</div>
我也不知道Order
是什么。如果它不是一个字符串,那么这也将是一个问题。
确保Order
是 Content
上的公共属性。现在我在实施 POC 应用程序时遇到了此异常。你猜怎么着?我忘了在我的 ViewModel 属性前面添加公共说明符。
我有这个:
public class UserViewModel
{
[StringLength(16)]
string Name { get; set; }
[Range(18, 65)]
int Age { get; set; }
}
然后你得到的同样的例外被扔在这里。
我这样做是为了解决问题:
public class UserViewModel
{
[StringLength(16)]
public string Name { get; set; }
[Range(18, 65)]
public int Age { get; set; }
}