Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 3 试图使用RenderPartial时发生对象引用错误_Asp.net Mvc 3_Asp.net Mvc 4 - Fatal编程技术网

Asp.net mvc 3 试图使用RenderPartial时发生对象引用错误

Asp.net mvc 3 试图使用RenderPartial时发生对象引用错误,asp.net-mvc-3,asp.net-mvc-4,Asp.net Mvc 3,Asp.net Mvc 4,我有一个使用视图模型的主视图。在ViewModel中,我这样做(编辑以显示完整的ViewModel): namespace MyNameSpace.ViewModels { public class MyViewModel { public ModelOne ModelOne { get; set; } public ModelTwo ModelTwo { get; set; } } } @using MyNameSpace.ViewMo

我有一个使用
视图模型的主视图
。在
ViewModel
中,我这样做(编辑以显示完整的
ViewModel

namespace MyNameSpace.ViewModels
{
    public class MyViewModel
    {
        public ModelOne ModelOne { get; set; }
        public ModelTwo ModelTwo { get; set; }
    }
}
@using MyNameSpace.ViewModels
@using MyNameSpace.Models
@model MyViewModel

...
@using (Html.BeginFormAntiForgeryPost())
{ 
    @Html.Hidden("myData", new MvcSerializer()
        .Serialize(Model, SerializationMode.Signed))
....
<div>
    @{Html.RenderPartial("_MyCheckBox", 
        Model.ModelTwo, new ViewDataDictionary());}
</div>
}
....
在我的主视图中,我这样做(编辑:添加
@Html.Hidden
code)

namespace MyNameSpace.ViewModels
{
    public class MyViewModel
    {
        public ModelOne ModelOne { get; set; }
        public ModelTwo ModelTwo { get; set; }
    }
}
@using MyNameSpace.ViewModels
@using MyNameSpace.Models
@model MyViewModel

...
@using (Html.BeginFormAntiForgeryPost())
{ 
    @Html.Hidden("myData", new MvcSerializer()
        .Serialize(Model, SerializationMode.Signed))
....
<div>
    @{Html.RenderPartial("_MyCheckBox", 
        Model.ModelTwo, new ViewDataDictionary());}
</div>
}
....
这里是ModelTwo.cs中的内容:

MyController.cs

然后在*MyController.cs内的特定
操作中:

public ActionResult Step5(string backButton, string nextButton)
{
    if (backButton != null)
        return RedirectToAction("Step4");
    else if ((nextButton != null) && ModelState.IsValid)
        return RedirectToAction("Confirm");
    else
        return View(myData);
    }

什么是null,Model还是MyCheckBox?@42老实说,在调试模式下不知道。我以为是模型,我做了
ModelTwo-ModelTwo=newmodeltwo()
无效,因此除非这是错误的,否则我必须假设MyCheckBox。我正要回答你的问题,你能发布MyViewModel和MyCheckBox的定义吗?@BishnuPaudel添加了代码。其中一些可能并不相关。我遗漏了
[MySelector]
@REMESQ的代码,在渲染主视图之前,您是否在控制器中的ViewModel实例中设置Model2?你能发布你的控制器代码来呈现你的主视图吗?
[Flags]
public enum MyEnum
{
    [Display(Name="Name 1")]
    Enum1 = 1,
    [Display(Name="Name 2")]
    Enum2 = 2,
    [Display(Name="Name 3")]
    Enum3 = 4,
    [Display(Name="Name 4")]
    Enum4 = 8,
    [Display(Name="Name 5")]
    Enum5 = 16
}
private MyViewModel myData;
protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
    var serialized = Request.Form["myData"];
    if (serialized != null) //Form was posted containing serialized data
    {
    myData= (MyViewModel)new MvcSerializer().Deserialize
        (serialized, SerializationMode.Signed);
        TryUpdateModel(myData);
    }
    else
        myData= (MyViewModel)TempData["myData"] ?? new MyViewModel();
    TempData.Keep();
}
protected override void OnResultExecuted(ResultExecutedContext filterContext)
{
    if (filterContext.Result is RedirectToRouteResult)
        TempData["myData"] = myData;
}
public ActionResult Step5(string backButton, string nextButton)
{
    if (backButton != null)
        return RedirectToAction("Step4");
    else if ((nextButton != null) && ModelState.IsValid)
        return RedirectToAction("Confirm");
    else
        return View(myData);
    }