MVC 라우팅 - 경로 부분을 사용하여 뷰를 전환하십시오
-
08-07-2019 - |
문제
나는 모양의 일련의 URL이 있습니다
/Catalog/Ajax/Update/{ViewToUpdate}?var1=a&var2=b&var3=c
현재 여러 경로를 설정합니다. 각 {viewToupDate}마다 하나씩, 내가하고 싶은 것은 {viewToupDate}를 조치 핸들러로 전달하여 코드를 응축 할 수 있습니다. 대신에:
public ActionResult AjaxUpdateNavigation(string var1, string var2, string var3) {}
내가 좋아하는 것:
public ActionResult AjaxUpdateNavigation(string ViewToUpdate, string var1, string var2, string var3) {}
내 현재 경로는 다음과 같습니다.
routes.MapRoute(
"CatalogAjaxNavigation",
"Catalog/Ajax/Update/Navigation",
new { controller = "Catalog", action = "AjaxUpdateNavigation" }
);
{viewtoupdate} 문자열을 모두 처리하고 여전히 쿼리 스트링을 전달하기 위해 경로 정의를 올바르게 설정하려면 어떻게해야합니까?
티아
해결책
내 경로는 다음과 같습니다.
routes.MapRoute("TestThing", "test/{ViewToUpdate}", new {controller = "Home", action = "TestQSParams"});
내 행동은 다음과 같습니다.
public ActionResult TestQSParams(string ViewToUpdate, string var1, string var2)
{
TestQSParamsModel m = new TestQSParamsModel {var1 = var1, var2 = var2, ViewToUpdate = ViewToUpdate};
return View("TestQSParams", m);
}
내 모델은 다음과 같습니다.
public class TestQSParamsModel
{
public string ViewToUpdate { get; set; }
public string var1 { get; set; }
public string var2 { get; set; }
}
내 견해는 다음과 같습니다.
From QS:<br />
<% foreach(string s in Request.QueryString)
Response.Write(string.Format("{0}={1}<br />", s, Request.QueryString[s])); %>
<br />
<br />
From Model:<br />
<asp:Literal ID="modelvars" runat="server"></asp:Literal>
CodeBehind보기 :
protected void Page_Load(object sender, EventArgs e)
{
modelvars.Text = string.Format("{0}<br />{1}<br />{2}", Model.var1, Model.var2, Model.ViewToUpdate);
}
내 URL :
/test/ThisView?var0=douglas&var1=patrick&var2=caldwell
마지막으로, 내 결과 :
From QS:
var0=douglas
var1=patrick
var2=caldwell
From Model:
patrick
caldwell
ThisView
다른 팁
routes.MapRoute(
"CatalogAjaxNavigation",
"Catalog/Ajax/Update/{ViewToUpdate}",
new { controller = "Catalog", action = "AjaxUpdateNavigation" , ViewToUpdate = (string)null }
);
public ActionResult AjaxUpdateNavigation(string ViewToUpdate, string var1, string var2, string var3) {}
제휴하지 않습니다 StackOverflow