Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.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 使用Razor视图的路由值集合中的动态命名参数_Asp.net Mvc_Dynamic_Razor_Named Parameters_Routevalues - Fatal编程技术网

Asp.net mvc 使用Razor视图的路由值集合中的动态命名参数

Asp.net mvc 使用Razor视图的路由值集合中的动态命名参数,asp.net-mvc,dynamic,razor,named-parameters,routevalues,Asp.net Mvc,Dynamic,Razor,Named Parameters,Routevalues,我使用助手方法在视图中创建节: @helper CreateFacetSection(WebViewPage page, string sectionName, List<FacetValue> model) { var showMore = int.Parse(WebConfigurationManager.AppSettings["ShowMore"]); <section id="@section

我使用助手方法在视图中创建节:

@helper CreateFacetSection(WebViewPage page, string sectionName,
                           List<FacetValue> model)
{
     var showMore = int.Parse(WebConfigurationManager.AppSettings["ShowMore"]);

     <section id="@sectionName">

     <h4>@sectionName</h4>

        <ul>
            @for (int i = 0; i < model.Count(); i++)
            {
                if (i >= showMore)
                {
                    @:<li class="hide">
                }
                else
                {
                    @:<li>
                }

                FacetValue fv = model.ElementAt(i);

                @page.Html.ActionLinkWithQueryString(fv.Range, "Search",
                                              new { sectionName = fv.Range }, null);

                @:(@fv.Count)

                @:</li >
            }
        </ul>   

        @if(model.Count > showMore)
        {
            <a href="#" class="show-more" data-section="@sectionName">
            @Localization.ShowMore &#9660;</a>
        }   

     </section>
}
是否有任何方法可以在路由值集合中传递动态命名参数?在上面的例子中,我希望动态命名一个参数
sectionName
,以便在action方法中获得正确的值绑定。它将根据我当前作为参数传递给helper方法的
sectionName
而变化

现在我得到了这样一个链接:

http://leniel-pc:8083/realty/search?sectionName=Volta%20Redonda
应该是:

http://leniel-pc:8083/realty/search?City=Volta%20Redonda
City
或我作为参数而不是
sectionName
传递的任何内容,因为“City”是我传递给helper方法的参数
sectionName
的值


我可以为
sectionName
做一个切换,但我只是想知道是否有更简洁的方法来实现这一点。

您没有展示
ActionLinkWithQueryString
自定义帮助器的外观,但是您可以添加一个重载,它使用
RouteValueDictionary
而不是匿名对象。然后很容易:

var values = new RouteValueDictionary();
values["somedynamicname"] = "some dynamic value";
values["someotherdynamicname"] = "some other dynamic value";
然后:

@Html.ActionLinkWithQueryString(fv.Range, "Search", values);
因为您说过这是一个内部使用
ActionLink
的扩展方法,所以
ActionLink
的重载将
RouteValueDictionary
而不是匿名对象作为路由参数


由于
RouteValueDictionary
有一个构造函数,该构造函数采用
IDictionary
,因此使用模型中的LINQ构建它可能非常容易。

您还没有展示
ActionLinkWithQueryString
自定义帮助程序的外观,但是您可以添加一个重载,它采用
RouteValueDictionary
而不是匿名对象。然后很容易:

var values = new RouteValueDictionary();
values["somedynamicname"] = "some dynamic value";
values["someotherdynamicname"] = "some other dynamic value";
然后:

@Html.ActionLinkWithQueryString(fv.Range, "Search", values);
因为您说过这是一个内部使用
ActionLink
的扩展方法,所以
ActionLink
的重载将
RouteValueDictionary
而不是匿名对象作为路由参数


由于
RouteValueDictionary
有一个构造函数,它接受
IDictionary
,因此使用模型中的LINQ构建它可能非常容易。

请尝试以下解决方案:

var routeValueDictionary = new RouteValueDictionary("");
routeValueDictionary.Add("keyName",value);
// Add any item you want!
@html.ActionLink("LinkName", "ActionName", "ControllerName",
routeValueDictionary , new{@class="form-control"})

请尝试此解决方案:

var routeValueDictionary = new RouteValueDictionary("");
routeValueDictionary.Add("keyName",value);
// Add any item you want!
@html.ActionLink("LinkName", "ActionName", "ControllerName",
routeValueDictionary , new{@class="form-control"})

伟大的达林。。。就这么做了,一切如期进行。上帝保佑达林先生。。。就这么做了,一切如期进行。上帝保佑D