我必須下面的代碼來訪問值從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
不,我會加一個更多解釋的答案,雖然它有點不清楚這樣做的目的是什麼。 –