2

MVC4 が何にもバインドできないという問題があります。

例えば:

    public class Question
    {
    [Key]
    [Required]
    public Int32 QuestionID { get; set; }

    [Required]
    public Int32 SurveyID { get; set; }

    [Required]
    public Int32 QuestionNumber { get; set; }

    [Required]  
    public Boolean AssignedToAPage { get; set; }
    }

[ビューの追加] を使用して厳密に型指定されたビューを作成し、上記のクラスを選択します。

    @model Models.Question

    @{
       ViewBag.Title = "View1";
       Layout = "~/Views/Layouts/_Site.Layout.cshtml";
    }

<h2>View1</h2>

@using (Html.BeginForm()) {
@Html.ValidationSummary(true)

<fieldset>
    <legend>Question</legend>

    <div class="editor-label">
        @Html.LabelFor(model => model.SurveyID)
    </div>
    <div class="editor-field">
        @Html.EditorFor(model => model.SurveyID)
        @Html.ValidationMessageFor(model => model.SurveyID)
    </div>

    <div class="editor-label">
        @Html.LabelFor(model => model.QuestionNumber)
    </div>
    <div class="editor-field">
        @Html.EditorFor(model => model.QuestionNumber)
        @Html.ValidationMessageFor(model => model.QuestionNumber)
    </div>

    <div class="editor-label">
        @Html.LabelFor(model => model.AssignedToAPage)
    </div>
    <div class="editor-field">
        @Html.EditorFor(model => model.AssignedToAPage)
        @Html.ValidationMessageFor(model => model.AssignedToAPage)
    </div>

    <p>
        <input type="submit" value="Create" />
    </p>
</fieldset>
}

<div>
    @Html.ActionLink("Back to List", "Index")
</div>

したがって、このページを生成した後、アクセスしようとすると、次のエラーが表示されます: コンパイラ エラー メッセージ: CS1061: 'オブジェクト' には 'SurveyID' の定義が含まれておらず、タイプの最初の引数を受け入れる拡張メソッド 'SurveyID' もありません「オブジェクト」が見つかりました (using ディレクティブまたはアセンブリ参照がありませんか?)

これは Visual Studio 2012 RC だけの問題ですか? 何かを再インストールする必要がありますか? この問題の閲覧回数をグーグル検索しましたが、関連するものはまだ見つかりません。Model を型に明示的にキャストすることに頼りましたが、それは @model を持つ目的を無効にしているようです。どんな入力も役に立ちます!ありがとう。

アップデート

Apparently I caused the issue by following someone else's advice on creating a custom view page class.  I created the following: 

public abstract class CustomWebViewPage : WebViewPage
{
    public ContentVersionHelper ContentVersion { get; set; }
    public override void InitHelpers()
    {
        base.InitHelpers();
        ContentVersion = new ContentVersionHelper(base.ViewContext, this);
    }
}

public abstract class CustomWebViewPage<TModel> : WebViewPage
    where TModel : class
{
    public ContentVersionHelper<TModel> ContentVersion { get; set; }
    public override void InitHelpers()
    {
        base.InitHelpers();
        ContentVersion = new ContentVersionHelper<TModel>(base.ViewContext, this);
    }
}

2番目のクラスで WebViewPage から派生する必要があることさえ考慮していませんでした。それを追加した後、すべてが修正されました。助けてくれてありがとう。

4

1 に答える 1

0

カスタム クラスは、次のように更新する必要があります。

public abstract class CustomWebViewPage : WebViewPage
{
    public ContentVersionHelper ContentVersion { get; set; }
    public override void InitHelpers()
    {
        base.InitHelpers();
        ContentVersion = new ContentVersionHelper(base.ViewContext, this);
    }
}

public abstract class CustomWebViewPage<TModel> : WebViewPage<TModel>
    where TModel : class
{
    public ContentVersionHelper<TModel> ContentVersion { get; set; }
    public override void InitHelpers()
    {
        base.InitHelpers();
        ContentVersion = new ContentVersionHelper<TModel>(base.ViewContext, this);
    }
}
于 2012-09-21T21:02:33.930 に答える