在ASP.NET MVC 2中向模型传递查询字符串数据
我有一个从POCO类继承的强类型视图。我想在加载视图时用Querystring值初始化模型的属性 在视图加载时,我使用ViewData保存代码:在ASP.NET MVC 2中向模型传递查询字符串数据,asp.net,.net,asp.net-mvc,asp.net-mvc-2,viewdata,Asp.net,.net,Asp.net Mvc,Asp.net Mvc 2,Viewdata,我有一个从POCO类继承的强类型视图。我想在加载视图时用Querystring值初始化模型的属性 在视图加载时,我使用ViewData保存代码: public ActionResult Data() { ViewData["QueryStringValue"] = this.Request.QueryString["Param1"] return View(); } 在HTML标记中,我使用此代码初始化隐藏变量中的模型属性 <%:Html.HiddenFo
public ActionResult Data() {
ViewData["QueryStringValue"] = this.Request.QueryString["Param1"]
return View();
}
在HTML标记中,我使用此代码初始化隐藏变量中的模型属性
<%:Html.HiddenFor(m=>m.Param,
Convert.ToInt32(Html.Encode(ViewData["QueryStringValue"]))) %>
BO.Save(d);
}
我检查了HTML源代码,发现隐藏字段本身的值为空。不确定为什么会发生这种情况,因为下面的代码可以工作,并在heading元素中显示param值
<h2> <%=Html.Encode(ViewData["QueryStringValue"]) %> </h2>
我不知道我在这方面哪里出错了。我认为,与其在
ViewData
中传递Querystring值,不如将其设置为ViewModel/Model
的属性值,并将其传递给视图
public ActionResult Data()
{
YourViewModel objVm=new YourViewModel();
objVm.Param=Request.QueryString["Param1"];
return View(objVm);
}
现在在强类型视图中,像这样使用它
@model YourViewModel
@using(Html.BeginForm())
{
@html.HiddenFor(@m=>m.Param);
<input type="submit" value="Save" />
}
刚完成这项工作,问题在于这一行:
<%:Html.HiddenFor(m=>m.Param,
Convert.ToInt32(Html.Encode(ViewData["QueryStringValue"]))) %>. I stated in the question that m.Param is of type byte. I figured out that issue was with casting.
m.Param,
Convert.ToInt32(Html.Encode(ViewData[“QueryStringValue”]))%>。我在问题中指出m.Param是byte类型的。我发现问题出在演员方面。
我试过这个代码,它成功了
<%:Html.HiddenFor(m => m.Param, (byte)Convert.ToInt16(this.Request.QueryString["Param1"].ToString()))%>
m.Param,(byte)Convert.ToInt16(this.Request.QueryString[“Param1”].ToString())%>
另外,仅添加@模型类型声明在MVC 2中不起作用(它可以:),但这不是我要求的。我以前就知道这个解决办法。我想知道这个代码哪里出了问题。最后,它归结为一个铸造问题。
<%:Html.HiddenFor(m=>m.Param,
Convert.ToInt32(Html.Encode(ViewData["QueryStringValue"]))) %>. I stated in the question that m.Param is of type byte. I figured out that issue was with casting.
<%:Html.HiddenFor(m => m.Param, (byte)Convert.ToInt16(this.Request.QueryString["Param1"].ToString()))%>