首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从视图到ajax的路由映射PartialView

从视图到ajax的路由映射PartialView
EN

Stack Overflow用户
提问于 2015-10-23 08:13:09
回答 2查看 257关注 0票数 0

我是ASP.NET MVC的新手。我刚刚创建了一个经典的MVCMovie应用程序。现在,我想增加更多的功能,只是为了学习。我做了一个按类型搜索电影的"SearchByGen"视图:在视图中有一个类型下拉列表和一个DIV占位符。占位符的内容由jQuery由PartialView "SearchByGenGetResult"加载,并且一切正常。

问题如下:

  1. 是建筑对吧?
  2. 如何通过调用视图(ex )来映射PartialView中的值。如果我通过"horror"通过DropDown选择搜索DropDown,我希望在URL中看到类似于"SearchByGen/horror"的内容,并且希望正确地看到结果和选择的DropDown选项访问"SearchByGen/horror"访问页面)

谢谢大家,现在密码:

控制器代码:

代码语言:javascript
运行
复制
public ActionResult SearchByGen()
    {
        //get the genres list
        var totalGens = _repository.GetGenrs(); 

        //put into List<SelectListItem> for @Dropdown it
        List<SelectListItem> items = totalGens.Select(genere => new SelectListItem { Text = genere, Value = genere }).ToList();

        //passing to the View
        ViewBag.TotalGen = items;

        return View();
    }

    public ActionResult SearchByGenGetResult(string gen)
    {
        //select movies by gen
        var moviesByGen = _repository.GetByGen(gen);

        //render partial view
        return PartialView(moviesByGen);
    }

视图SearchByGen

代码语言:javascript
运行
复制
@model IEnumerable<MvcMovies.Models.Movie>
@{
   ViewBag.Title = "Search By Gen";
 }

<script src="@Url.Content("~/Scripts/jquery-1.7.1.js")" type="text/javascript"></script>

<script src="@Url.Content("~/Scripts/jquery-ui-1.8.20.js")" type="text/javascript"></script>

<link href="@Url.Content( "~/content/themes/base/jquery-ui.css")" rel="Stylesheet" type="text/css" />

<script type="text/javascript">

$(document).ready(
    function () {

        var dropDownSelectedDefault = $("#TotalGen option:selected").text();
        $("#viewPlaceHolder").load("/Movie/SearchByGenGetResult", { gen: dropDownSelectedDefault });

        //$("input#search").click(
        $("#TotalGen").change(
            function () {
                var dropDownSelected = $("#TotalGen option:selected").text();
                $("#viewPlaceHolder").load("/Movie/SearchByGenGetResult", { gen: dropDownSelected });
            }
        );
    }
);    
</script>
<h2>Search By Gen</h2>
<div>
@Html.DisplayName("Genere ")
@Html.DropDownList("TotalGen")
</div>
<div id="viewPlaceHolder"></div>

部分视图SearchByGenGetResult (未显示,经典的支架列表视图)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-10-23 12:29:15

您可以使用带有FormMethod.Get的表单来实现这一点,以便生成正确的url (并将其添加到浏览器历史记录中)。您只需要一个方法,并且应该使用视图模型来表示要在视图中显示的内容。

代码语言:javascript
运行
复制
public class MovieVM
{
  public string Genre { get; set; }
  public SelectList GenreList { get; set; }
  public IEnumerable<Movie> Movies { get; set; }
}

public ActionResult Index(string genre)
{
  var genreList = _repository.GetGenrs(); // assume this returns IEnumerable<string>
  genre = genre ?? genreList.First();
  MovieVM model = new MovieVM
  {
    Genre = genre,
    GenreList = new SelectList(genreList),
    Movies = _repository.GetByGen(genre)
  };
  return View(model)
}

@model MovieVM
....
@using (Html.BeginForm("Index", "Movie", FormMethod.Get))
{
  @Html.LabelFor(m => m.Genre)
  @Html.DropDownListFor(m => m.Genre, Model.GenreList)
  <input type="submit" value="Search" />
}
<div id="movies">
  @foreach (var movie in Model.Movies)
  {
     ....
  }
</div>

或者,如果您想使用ajax (由于html的大部分位于电影列表中,所以可能没有多少性能上的好处),则需要使用History.js或类似于这个答案及其相关链接中描述的插件。

票数 0
EN

Stack Overflow用户

发布于 2015-10-23 14:28:11

首先,

代码语言:javascript
运行
复制
Architecture can be change to your project But you can look these title;
  1. 什么是防伪令牌?(这里的示例:在ajax后ASP.NET MVC中包含防伪造令牌 )
  2. 捆绑是什么?
  3. 您还可以查看此示例(在ajax后ASP.NET MVC中包含防伪造令牌)

第二个问题的回答;

代码语言:javascript
运行
复制
public PartialViewResult SearchByGenGetResult(string gen)
{
    //select movies by gen
    var moviesByGen = _repository.GetByGen(gen);

    //render partial view
    return PartialView(moviesByGen);
}

视图脚本;

代码语言:javascript
运行
复制
var dropDownSelected = $("#TotalGen option:selected").text();
   var url = '@Url.Action("SearchByGenGetResult", "Home")/' + dropDownSelected ;
   $('#viewPlaceHolder').load(url);

示例:(用jQuery在ASP.NET MVC中渲染部分视图)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33297698

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档