我在mvc中制作自定义网址时遇到问题。我想像这样制作网址:
http://www.domainname.com/directory/bysearch/value1/value2
但它就是这样的
http://www.domainname.com/directory/bysearch?txtaddress=value1&searchString=value2
和
RouteConfig.cs代码
routes.MapRoute(
name: "Directory",
url: "Directory/{qualifier}/{v1}/{v2}/{v3}/{v4}/{v5}/{v6}/{v7}/{v8}",
defaults: new
{
controller = "Directory",
action = "index",
qualifier = UrlParameter.Optional,
v1 = UrlParameter.Optional,
v2 = UrlParameter.Optional,
v3 = UrlParameter.Optional,
v4 = UrlParameter.Optional,
v5 = UrlParameter.Optional,
v6 = UrlParameter.Optional,
v7 = UrlParameter.Optional,
v8 = UrlParameter.Optional
});
routes.MapRoute(
name: "DirectorySerach",
url: "Directory/bysearch/{v1}/{v2}",
defaults: new
{
controller = "Directory",
action = "Search",
v1 = UrlParameter.Optional,
v2 = UrlParameter.Optional
});
控制器
public ActionResult Index(string qualifier, string v1, string v2, string v3, string v4, string v5, string v6, string searchString, int page = 1)
{
// code logic here
return View();
}
public ActionResult Search(string v1 = null,string v2 = null)
{
//code logic here
return View();
}
查看
@using (Html.BeginForm("search","Directory", FormMethod.Get))
{
<div class="form-group">
<div class="c-checkbox">
<input id="chkOnline" name="chkOnline" class="c-check" type="checkbox">
<label for="chkOnline" class="c-font-thin c-font-17">
<span></span>
<span class="box"></span> Online
<span class="check"></span>
</label>
</div>
</div>
<div class="form-group">
@Html.TextBox("txtaddress", null, new { @class = "form-control c-square c-theme input-lg", @placeholder = "Address OR ZIP/Postal Code OR City" })
</div>
<div class="input-group input-group-lg c-square">
@Html.TextBox("searchString", null, new { @class = "form-control c-square c-theme input-lg", @placeholder = "Enter Keyword" })
<span class="input-group-btn">
<button class="btn c-theme-btn c-btn-square c-btn-uppercase c-font-bold" type="submit">Go!</button>
</span>
</div>
}
请帮助/指导我,我错了或有什么问题。以及如何解决。 我很感激你的价值时间和精力。提前谢谢。
答案 0 :(得分:1)
如果你想制作干净的URl,那么你需要手动创建URl,因为Form Submit将始终创建查询字符串。
所以删除你的表单并用超链接替换按钮。并在链接上写下点击事件。
@Html.TextBox("v1", null, new { })
@Html.TextBox("v2", null, new { })
<a href="javascript:void(0)" id="btnSearch" class="btn btn-primary">GO</a>
现在编写一个将创建URl
的函数<script src="~/Scripts/jquery-1.10.2.min.js"></script>
<script>
$(document).ready(function(){
$('#btnSearch').on('click',function(){
var baseUrl = '@Url.Action("Search", "Directory")';
var gettext1= $('#v1').val();
var gettext2= $('#v2').val();
if(gettext1){
baseUrl += '/'+gettext1;
}else{
baseUrl += "/0";
}
if(gettext2){
baseUrl +="/"+ gettext2;
}else{
baseUrl += "/0";
}
location.href=baseUrl;
});
});
</script>
这里你需要处理 0 。好像用户没有在文本框中输入任何内容,我就传递了0。