asp.net-mvc - MVC3 (Razor) 将模型数据从 View 传递到 Controller

标签 asp.net-mvc list razor

我需要知道是否有办法将 View (Razor 引擎)的模型(或其一部分,即搜索查询)数据传递给 Controller ​​。

为了更好地解释我必须做的事情,这是感兴趣的代码:

查看:

@model IEnumerable<MvcMovie.Models.Movie>

@{
    ViewBag.Title = "Index";
}

<h2>Index</h2>

...
@foreach (var item in Model) { ...}
...

@Html.ActionLink("Search", "SearchIndex")
@Html.ActionLink("Create Document", "createDoc"/*, new { id = Model.ToList() }*/)

我要通过

@model IEnumerable<MvcMovie.Models.Movie>

在第一行(= foreach 指令中使用的模型)到 Controller “createDoc”以创建与 View 动态绑定(bind)的报表文档。

我尝试了所有方法:我尝试使用 ViewData (VIEW: ViewData["data"]=Model , CONTROLLER List movies= ViewData["data"]),我同样尝试了 TempData,我尝试将模型传递为ActionLink 中的 routeValues(如您所见:new{ id= Model.toList() }),但没有任何效果。

我什至可以做我想做的事吗?

谁能帮帮我?

最佳答案

你的模型不应该是 IEnumerable<MvcMovie.Models.Movie>它应该是一个类,比如 SearchMovieModel , 那有 IEnumerable<MvcMovie.Models.Movie> Movies作为其属性之一。

如果你想要一个搜索模型,像这样的东西是合适的:

public class SearchMovieModel{
    public IEnumerable<MvcMovie.Models.Movie> Movies {get;set;}
    public string SearchString {get;set;}
}

您在 View 和 Controller 中引用此模型及其属性。

我想我应该在 Controller 中添加解析它的方法。

在第一次调用 View 时,模型不存在。您需要在 Controller 中创建它:

public ActionResult Search(){
    var model = new SearchMovieModel();
    //you also need to instantiate the null objects unless you do that in the model's constructor
    model.Movies = new List<Movie>();
    return View(model);
}

要将 POST 数据“重新转换”回模型,您需要指定模型和方法:

[HttpPost]
public ActionResult Search(SearchMovieModel model){
    if (ModelState.IsValid){
        //populate your IEnumerable<Movie> here.
        return View(model);
    }
    // the complex collection will not be parsed back into the model.  You will need to repopulate it.
    model.Movies = new List<Movie>();
    return View(model);
}

关于asp.net-mvc - MVC3 (Razor) 将模型数据从 View 传递到 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10853508/

相关文章:

java - 随机化 ArrayList 中的项目子集

c# - 如何在 razor 中指定数据属性,例如 @this.Html.CheckBoxFor(...) 上的 data-externalid ="23151"

asp.net-mvc - ASP.NET MVC 2 - 一个属性上的多个正则表达式

css - ASP.NET MVC5 JQuery 数据表 CSS 不适用于 Bootstrap Lumen

python - 解包列表理解中元素的 "the rest"- python3to2

list - haskell [[Char]] 到 [[Int]]

javascript - 将单个模型值(字符串)作为参数传递给可重用的 javascript 函数,以在 MVC View 中设置表格单元格类

asp.net-mvc - 在 Kendo 模板(Razor)中渲染 Kendo 控制

jquery - mvc ajax.actionlink 与 jquery 对话框确认

asp.net-mvc - 是否仍支持 MetaWeblog API?