在 MVC 中使用 TextBoxFor 和 viewModels 时出现问题



我最近开始使用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是什么。如果它不是一个字符串,那么这也将是一个问题。

确保OrderContent 上的公共属性。现在我在实施 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; }
}

相关内容

  • 没有找到相关文章

最新更新