如何将我的文本框字符串映射到我的 url 路线?
how do I map my text box string into my url route?
我有一个文本框,我可以在其中输入数据并通过 post 传递到我的 'home' 控制器以执行操作 'results'
我希望 url 在我 post 返回时看起来像这样
https://localhost:44301/Home/Results/San Francisco, CA, United States
我正在像这样传递文本框数据。
@using (Html.BeginForm("Results", "Home", FormMethod.Get, new { @class = "navbar-form navbar-left", role = "search" }))
{
<div class="form-group">
<input type="text" class="form-control" placeholder="Search" id="navbarautocomplete" name="location">
<button type="submit" class="btn btn-default">Submit</button>
</div>
}
这是我的路线。
routes.MapRoute("SearchResults",
"home/results/{location}",
new { controller = "Home", action = "Results", location = ""}
);
如何设置我的路由或我的表单以查看已作为位置提交到我的 url 中的数据?
我可以让它看起来像这样。
https://localhost:44301/home/results?location=San+Francisco%2C+CA%2C+United+States
但我想在 /results/
之后去旧金山
正如@StephenMuecke 在评论中提到的那样,您可以 POST 将您的搜索值添加到一个(单独的)操作中,然后重定向到您的结果页面,将位置作为参数传递:
@using (Html.BeginForm("Search", "Home", FormMethod.Post, new { @class = "navbar-form navbar-left", role = "search" }))
{
<div class="form-group">
<input type="text" class="form-control" placeholder="Search" id="navbarautocomplete" name="location">
<button type="submit" class="btn btn-default">Submit</button>
</div>
}
然后在你的控制器中:
[HttpPost]
public ActionResult Search(string location)
{
return RedirectToAction("Results", new { location = location });
}
public ActionResult Results(string location)
{
return Content("location is: " + location);
}
您还需要在 RouteConfig 中设置以下路由以获得友好 URL(确保这是在默认路由之上,因为它们自上而下匹配)。
routes.MapRoute(
name: "SearchResults",
url: "Home/Results/{location}",
defaults: new { controller = "Home", action = "Results" }
);
我有一个文本框,我可以在其中输入数据并通过 post 传递到我的 'home' 控制器以执行操作 'results'
我希望 url 在我 post 返回时看起来像这样
https://localhost:44301/Home/Results/San Francisco, CA, United States
我正在像这样传递文本框数据。
@using (Html.BeginForm("Results", "Home", FormMethod.Get, new { @class = "navbar-form navbar-left", role = "search" }))
{
<div class="form-group">
<input type="text" class="form-control" placeholder="Search" id="navbarautocomplete" name="location">
<button type="submit" class="btn btn-default">Submit</button>
</div>
}
这是我的路线。
routes.MapRoute("SearchResults",
"home/results/{location}",
new { controller = "Home", action = "Results", location = ""}
);
如何设置我的路由或我的表单以查看已作为位置提交到我的 url 中的数据?
我可以让它看起来像这样。
https://localhost:44301/home/results?location=San+Francisco%2C+CA%2C+United+States
但我想在 /results/
之后去旧金山正如@StephenMuecke 在评论中提到的那样,您可以 POST 将您的搜索值添加到一个(单独的)操作中,然后重定向到您的结果页面,将位置作为参数传递:
@using (Html.BeginForm("Search", "Home", FormMethod.Post, new { @class = "navbar-form navbar-left", role = "search" }))
{
<div class="form-group">
<input type="text" class="form-control" placeholder="Search" id="navbarautocomplete" name="location">
<button type="submit" class="btn btn-default">Submit</button>
</div>
}
然后在你的控制器中:
[HttpPost]
public ActionResult Search(string location)
{
return RedirectToAction("Results", new { location = location });
}
public ActionResult Results(string location)
{
return Content("location is: " + location);
}
您还需要在 RouteConfig 中设置以下路由以获得友好 URL(确保这是在默认路由之上,因为它们自上而下匹配)。
routes.MapRoute(
name: "SearchResults",
url: "Home/Results/{location}",
defaults: new { controller = "Home", action = "Results" }
);