2012-08-29 21 views
0

我有一個視圖模型像Html.Serialize回報的NullReferenceException

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

另外,我有一個動作方法:

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(剃刀)和堆棧跟蹤低於:

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) 

什麼是錯在我的代碼?

+0

您必須提供有關您所看到的錯誤的更多詳細信息,例如堆棧跟蹤,您正在使用的MVC版本等。 – Levi

回答

0

您需要使用

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

,如果你想與表單模型隱藏字段。

+0

Kirill,我使用了這種格式,但同樣的錯誤.. –

+0

你確定這部分代碼存在問題嗎?我正在使用您的代碼更新是在我的答案,它的工作原理。可能你有一些ActionFilters?你能顯示你的global.asax.cs嗎?你有控制器類或操作方法的任何屬性? –

0

問題是我有程序集引用Mvc2Futures(「Microsoft.Web.Mvc.dll」)。但是,當我改變引用Mvc3Futures(「Microsoft.Web.Mvc.dll」)一切正常。 非常感謝。