Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc Routelink viewdata值始终为空_Asp.net Mvc_Asp.net Mvc Routing - Fatal编程技术网

Asp.net mvc Routelink viewdata值始终为空

Asp.net mvc Routelink viewdata值始终为空,asp.net-mvc,asp.net-mvc-routing,Asp.net Mvc,Asp.net Mvc Routing,我有路由规则 routes.MapRoute( "Search", // Route name "Restaurant/AdvancedSearch/{foodType}", // URL with parameters new { controller = "Restaura

我有路由规则

 routes.MapRoute(
            "Search",                                                     // Route name
            "Restaurant/AdvancedSearch/{foodType}",                       // URL with parameters
            new { controller = "Restaurant", action = "AdvancedSearch", foodType = "" }  // Parameter defaults
        );
在我看来,我希望将值从选择列表传递到routeLink

<% using (Html.BeginForm("SimpleSearch", "Restaurant")) { %>
    <div>
        <fieldset>
            <legend>Restaurant Search</legend>
            <label for="Food">Type of food:</label>
            <%= Html.DropDownList("Food", Model.FoodType, "-- Select --")%>

            <%= Html.RouteLink("Advanced search?", "Search", new { foodType=(ViewData["Food"]) })%>
      </fieldset>
    </div>
<% } %>

您的RouteLink是在服务器端构建的,这意味着它将始终是静态的-
foodType
将始终等于
ViewData[“Food”]
的值。当用户更改下拉列表中的选择时,需要使用javascript用新值修改链接。以下是您可以实现此目标的方法:

$(function() {
    $('select#Food').change(function() {
        $('a').attr('href', '/Restaurant/AdvancedSearch/' + $(this).val());
    });
});

备注:此解决方案有一个缺点:如果修改路由,它将不再工作,因为href是用javascript硬编码的。

如果看不到模型类,很难知道。但我认为你想这样做:

<%= Html.DropDownList("Food", ViewData["Food"], "-- Select --")%>
<%= Html.RouteLink("Advanced search?", "Search",new {foodType= Model.FoodType})%>

假设
ViewData[“Food”]
包含
IEnumerable
模型。FootType
返回模型食品类型的ID

<%= Html.DropDownList("Food", ViewData["Food"], "-- Select --")%>
<%= Html.RouteLink("Advanced search?", "Search",new {foodType= Model.FoodType})%>