首页 > 解决方案 > 带有 java 脚本的 MVC 中的用户友好 URL

问题描述

Route.config文件中使用以下代码成功地将用户路由到控制器search内的操作方法:Home

routes.MapRoute(
    name: "search",
    url: "{controller}/{action}/{inpSearch}",
    defaults: new { controller = "Home", action = "search", inpSearch = "" }
    );

searchHome控制器内的动作方法代码:

public ActionResult search(string inpSearch)
{
    var a = (from i in db.Items
             where i.ItemName.Contains(inpSearch) ||
             i.Category.Name.Contains(inpSearch) ||
             i.Brand.Name.Contains(inpSearch)
             select i).ToList();
    return View(a);
}

对于用户友好的 URL,我使用了以下 javaScript:

$('#inpSearch').on('keyup', function(e){
    if (e.keyCode === 13) {
    var baseUrl = '@Url.Action("search", "Home")/'
    var url = baseUrl + $('#inpSearch').val();
        window.location.href = url;                    
    }
})

如您所见,我需要将inpSearch字符串作为参数传递给控制器search​​内的此操作方法。Home不知道我是怎么做到的。

例如,用户友好的 URL(即 /Home/search/car)运行良好。

标签: javascriptc#jqueryasp.net-mvcmodel-view-controller

解决方案


尝试使用参数作为

@Url.Action("ActionName", "ControllerName", new { paramName1 = paramValue1 })

或者

window.location.href ="/Home/search?inpSearch="+$('#inpSearch').val()

推荐阅读