我必须下面的代码来访问值从Route.Values
为什么RoutData.Values [“txtName”]会引发null参考错误?
的index.cshtml
与输入控件和值
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
@using(Html.BeginForm("Create", "Concepts", FormMethod.Get, null))
{
@Html.Hidden("ghia", new { d="sssd343433333355555%%%%%%%" })
<input type="text" name="txtName" value="dummydata1" />
<input type="text" name="txtsdsdfs&&&&33adada" value="dummydata2" />
<input type="submit" value="New" />
}
在
Create.cshtml
试图访问这些值以上
@{
ViewBag.Title = "Create";
}
<h2>Create</h2>
@{
//Routeda
var p1 = ViewContext.RouteData.Values["txtName"].ToString;
}
<p>@p1</p>
抛出时一行Null Reference
例外:
var p1 = ViewContext.RouteData.Values["txtName"].ToString();
我的RouteMap是
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "test1",
url: "{controller}/{action}/{txtName}/{txtsdsdfs&&&&33adada}",
defaults: new { controller = "Concepts", action = "Create" }
);
}
为什么行抛出异常,我如何解决这一问题?
因为价值他们被添加为查询字符串值,而不是路由值 - 使用'var p1 = ViewContext.HttpContext.Request.QueryString.Get(“txtName”);' –
@StephenMuecke好吧我困惑,当我设置RoutMap它将这些值添加到ViewContext .RouteData.Values收集权限? – zeelong
不,我会加一个更多解释的答案,虽然它有点不清楚这样做的目的是什么。 –