Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.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 2中向模型传递查询字符串数据_Asp.net_.net_Asp.net Mvc_Asp.net Mvc 2_Viewdata - Fatal编程技术网

在ASP.NET MVC 2中向模型传递查询字符串数据

在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

我有一个从POCO类继承的强类型视图。我想在加载视图时用Querystring值初始化模型的属性

在视图加载时,我使用ViewData保存代码:

 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()))%>