0

私は次のようなViewModelを持っています

namespace ViewModel
{
    [Serializable]
    public class TestViewModel
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public string Description { get; set; }
    }
}

また、アクション メソッドが 1 つあります。

public ActionResult Index()
{
    TestViewModel model = new TestViewModel
    {
        Id = -1,
        Name = "Some name",
        Description = "Some description"
    };

    return View(model);
}

そして、私のビューは次のようになります:

@using Microsoft.Web.Mvc
@model ViewModel.TestViewModel

@using (Html.BeginForm())
{
    Html.Serialize("model", Model, SerializationMode.EncryptedAndSigned);
    //....Editor fields
}

「Html.Serialize("model", Model, SerializationMode.EncryptedAndSigned);」行 デバッガーが停止し、例外「オブジェクト参照がオブジェクトのインスタンスに設定されていません」(NullReferenceException) を返します。ただし、モデルは null ではなく、初期値が含まれています。

私は ASP.Net MVC 3(Razor) を使用しており、スタック トレースは以下のとおりです。

in Microsoft.Web.Mvc.SerializationExtensions.SerializeInternal(HtmlHelper htmlHelper, 
String name, Object data, SerializationMode mode, Boolean useViewData, MvcSerializer
serializer) 
in Microsoft.Web.Mvc.SerializationExtensions.SerializeInternal(HtmlHelper htmlHelper,
String name, Object data, SerializationMode mode, Boolean useViewData)
in Microsoft.Web.Mvc.SerializationExtensions.Serialize(HtmlHelper htmlHelper, String
name, Object data, SerializationMode mode)
in ASP._Page_Views_Wizard_Index_cshtml.Execute()
in c:\Projects\TestProject\Views\Wizard\Index.cshtml:line 15
in System.Web.WebPages.WebPageBase.ExecutePageHierarchy()
in System.Web.Mvc.WebViewPage.ExecutePageHierarchy()
in System.Web.WebPages.StartPage.RunPage()
in System.Web.WebPages.StartPage.ExecutePageHierarchy()
in System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext,
TextWriter writer, WebPageRenderingBase startPage)
in System.Web.Mvc.RazorView.RenderView(ViewContext viewContext, TextWriter writer,
Object instance)
in System.Web.Mvc.BuildManagerCompiledView.Render(ViewContext viewContext, TextWriter
writer)
in System.Web.Mvc.ViewResultBase.ExecuteResult(ControllerContext context)
in System.Web.Mvc.ControllerActionInvoker.InvokeActionResult(ControllerContext
controllerContext, ActionResult actionResult)
in System.Web.Mvc.ControllerActionInvoker.
<>c__DisplayClass1c.InvokeActionResultWithFilters>b__19()
in System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter filter, 
ResultExecutingContext preContext, Func`1 continuation)

私のコードで何が問題になっていますか?

4

2 に答える 2

0

使用する必要があります

@Html.Serialize("model", Model, SerializationMode.EncryptedAndSigned)

フォームにモデルを含む隠しフィールドが必要な場合。

于 2012-08-30T06:42:05.743 に答える
0

問題は、Mvc2Futures ("Microsoft.Web.Mvc.dll") へのアセンブリ参照があったことです。しかし、Mvc3Futures ("Microsoft.Web.Mvc.dll") への参照を変更すると、すべて正常に動作します。どうもありがとう。

于 2012-08-30T07:18:11.363 に答える