C# MVC局部视图、GET和布线

C# MVC局部视图、GET和布线,c#,asp.net-mvc,asp.net-mvc-routing,C#,Asp.net Mvc,Asp.net Mvc Routing,你好, 这是我的第一个问题,所以请客气一点。我刚刚从表单转移到mvc。 我走了下面的路线。我构建了一个局部视图,其中还包含另外两个局部视图(如下所示)。 提交时,url将类似于'Find/Index?Region=3&Interest=1' 创建与定义的路由匹配的友好url的最佳方法是什么 “查找/索引/In-Wales-3/Sport-1”?我可以发布然后重定向,但我认为这可能效率低下。使用jquery是否有更好的方法 还请说明所使用的设计是否正确或是否可以改进?分离视图的原因是,它们用于多个

你好, 这是我的第一个问题,所以请客气一点。我刚刚从表单转移到mvc。 我走了下面的路线。我构建了一个局部视图,其中还包含另外两个局部视图(如下所示)。 提交时,url将类似于'Find/Index?Region=3&Interest=1'

  • 创建与定义的路由匹配的友好url的最佳方法是什么 “查找/索引/In-Wales-3/Sport-1”?我可以发布然后重定向,但我认为这可能效率低下。使用jquery是否有更好的方法

  • 还请说明所使用的设计是否正确或是否可以改进?分离视图的原因是,它们用于多个视图

  • 提前谢谢

    路由配置 在母版页上呈现的局部视图
    @model SimpleFriendFinderModel
    发现
    @使用(Html.BeginForm(“Index”、“Find”、FormMethod.Get))
    {
    @Html.Partial(“_RegionDropDown”,@Model.Regions)
    @Html.Partial(“\u InterestDropDown”,@Model.Interests)
    搜寻
    }
    
    区域局部视图
    @model IEnumerable
    区域
    @{foreach(模型中的变量项){
    @item.RegionName
    }
    }
    

    另一个局部视图是区域的副本,但显然是不同的模型

    用于局部视图;如果你在其他页面上重复使用它,这是一种方法。你可以把它看作是“封装逻辑”

    更新:如果您只是使用部分视图作为下拉列表,请忽略上述内容。有一个HtmlHelper,
    Html.DropDownListFor()

    第一部分;该命令是相关的:

    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
    
    routes.MapRoute(
              name: "Pretty",
              url: "{controller}/{action}-{id}/Something",
              defaults: new { controller = "Test", action = "Foo", id = UrlParameter.Optional }
          );
    
    //default route
    routes.MapRoute(
              name: "Default",
              url: "{controller}/{action}/{id}",  
              defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional    }
            );
    
    例如,如果您希望将URL格式化为:

    http://local:23802/Test/Foo-5/Something
    

    至于你的第一个问题,它实际上是一个很好的问题。当您打开页面时,没有帖子,URL是否为
    Find/Index/in-Wales-3/Sport-1
    格式?嗨,不,这是生成该URL的目的。实际url是Find/Index?Region=Wales&rid=3&Interest=Sport&iid=1。很难看!!啊,我曾经用过类似的东西。你能张贴完整的路线图吗?我知道代码中出现的顺序非常重要。嗨,Stefan,谢谢你的输入。我知道路由功能在模式匹配方面是基于FCFS的。路线设置不是问题所在。问题是如何将表单提交到该URL。使用GET,我不知道我的下拉值是否有占位符函数。或者我可以发布然后执行重定向结果,但这可能效率低下。干杯…嗯,现在我明白你的意思了。。。并试图弄明白这一点:|
    @model IEnumerable<Region>
    
    <select id="Region" name="Region">
    <option>REGION</option>
        @{ foreach(var item in Model) {
            <option value="@item.RegionID">@item.RegionName</option>
        }
    }
    </select>
    
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
    
    routes.MapRoute(
              name: "Pretty",
              url: "{controller}/{action}-{id}/Something",
              defaults: new { controller = "Test", action = "Foo", id = UrlParameter.Optional }
          );
    
    //default route
    routes.MapRoute(
              name: "Default",
              url: "{controller}/{action}/{id}",  
              defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional    }
            );
    
    http://local:23802/Test/Foo-5/Something