REM*_*ESQ 2 asp.net-mvc-3 asp.net-mvc-4
无法找到解决此问题的正确方法.
我正在使用[Serializable](MVC3期货)以获得具有单独视图的"向导".这是我的控制器中要序列化的代码:
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;
}
Run Code Online (Sandbox Code Playgroud)
沿着我的控制器还我这样做(只是一个片段 - 代码经过与向前和后退按钮Strings向导):
public ActionResult Confirm(string backButton, string nextButton)
{
if (backButton != null)
return RedirectToAction("Details");
else if ((nextButton != null) && ModelState.IsValid)
return RedirectToAction("Submitted");
else
return View(myData);
}
Run Code Online (Sandbox Code Playgroud)
在我.cshtml看来,我有这个:
@using (Html.BeginFormAntiForgeryPost())
{
@Html.Hidden("myData", new MvcSerializer().Serialize(Model, SerializationMode.Signed))
...
@Html.TextBoxFor(m => model.Step.EMail)
...
}
Run Code Online (Sandbox Code Playgroud)
因为我正在使用动态,所以我必须在视图中使用变量:
var model = (MyViewModel) Model.myData;
Run Code Online (Sandbox Code Playgroud)
为了做到这一点@Html.TextBoxFor.这就是我的问题,因为如果我这样做@model MyViewModel,那么我就做不到model.Step.EMail.但由于动态,这@Html.Hidden将无法工作,我得到以下错误:
编译器错误信息:CS1973:"System.Web.Mvc.HtmlHelper"有一个名为"隐藏"不适用的方法,但似乎有这个名字的扩展方法.无法动态分派扩展方法.考虑转换动态参数或调用扩展方法而不使用扩展方法语法.
我可以切换到其他方式[Serializable],但没有,但我必须转换大量的代码.有没有办法让这项工作?
小智 6
扩展方法未识别方法,因为数据类型不匹配.尝试施放为对象.
@Html.Hidden("myData", new MvcSerializer().Serialize(Model, SerializationMode.Signed) as Object)
Run Code Online (Sandbox Code Playgroud)
要么
@Html.Hidden("myData", (Object)new MvcSerializer().Serialize(Model, SerializationMode.Signed))
Run Code Online (Sandbox Code Playgroud)
它会奏效.
| 归档时间: |
|
| 查看次数: |
7296 次 |
| 最近记录: |