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 から派生する必要があることさえ考慮していませんでした。それを追加した後、すべてが修正されました。助けてくれてありがとう。