在MVC中使用TextBoxFor和viewModels的问题

Ala*_*an2 5 asp.net-mvc viewmodel razor asp.net-mvc-3 html.textboxfor

我最近开始使用viewModel.这是我正在使用的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; }

    }
Run Code Online (Sandbox Code Playgroud)

我改变了我的剃刀观点:

@model WebUx.Content

<div class="colx2-left">
    <label for="complex-fr-url" class="required">Order</label>
    @Html.TextBoxFor(model => model.Order)
</div>
Run Code Online (Sandbox Code Playgroud)

至:

@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>
Run Code Online (Sandbox Code Playgroud)

现在我的观点失败了,显示以下消息:

编译器错误消息:CS0411:方法System.Web.Mvc.Html.InputExtensions.TextBoxFor TModel,TProperty>的类型参数(System.Web.Mvc.HtmlHelper <TModel>,System.Linq.Expressions.Expression <System.Func < TModel,TProperty >>)无法从使用中推断出来.尝试显式指定类型参数.

有人可以给我一些关于我该做什么的建议吗?

RPM*_*984 2

根据经验,我确保我的视图/模板仅引用它正在处理的模型中的属性,而不是下面的属性。

您在更改之前的第一次尝试是正确的。

因此,我会将您的视图更改为以下内容:

@model WebUx.Areas.Admin.ViewModels.Contents.ContentViewModel
@Html.EditorFor(model => model.Content)
Run Code Online (Sandbox Code Playgroud)

并利用您现有的模板:

@model WebUx.Content
<div class="colx2-left">
    <label for="complex-fr-url" class="required">Order</label>
    @Html.TextBoxFor(model => model.Order)
</div>
Run Code Online (Sandbox Code Playgroud)

我也不知道是什么Order。如果它不是字符串,那么这也会成为一个问题。