5

最近、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; }

    }

かみそりのビューを次のように変更しました。

@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 <TModel>、System.Linq.Expressions.Expression <System.Func < TModel、TProperty >>)は使用法から推測できません。タイプ引数を明示的に指定してみてください。

誰かが私に何をすべきかについてアドバイスをくれますか?

4

2 に答える 2

2

経験則として、ビュー/テンプレートは、モデルの下ではなく、モデル内のプロパティのみを参照するようにします。

変更前の最初の試みは正しかった。

したがって、ビューを次のように変更します。

@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あるかわかりません。それが文字列でない場合、それも問題になります。

于 2012-09-21T01:44:40.467 に答える
1

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; }
}
于 2013-08-29T21:42:16.207 に答える