asp.net mvc 在视图和控制器之间传递参数

Posted

技术标签:

【中文标题】asp.net mvc 在视图和控制器之间传递参数【英文标题】:asp.net mvc pass parameters between view and controller 【发布时间】:2016-01-03 18:11:20 【问题描述】:

我是 asp.net 的新手,我想创建简单的数据库应用程序。 我需要在视图和控制器之间传递参数以从数据库中检索数据。 我只需要标题为“某物”的数据。我创建了包含搜索设置的简单左侧菜单。 这是我的查看页面。

@model IEnumerable<TwojaBiblioteka.Models.Ksiazka>
@
ViewBag.Title = "Home Page";

@Styles.Render("~/Content/css")
<div class="jumbotron">
<script src="~/Scripts/jquery-2.1.4.min.js"></script>
<script src="~/Scripts/jquery.unobtrusive-ajax.min.js"></script>
<div class="container">
    <div class="row">

        <div class="col-md-2">
            <h2>Szukaj</h2>

            <div class="textboxes">
                <input type="text" name="Tytul" class="form-control" id="Tytul" placeholder="Tytuł..." />
                <input type="text" name="txtAutor" class="form-control" id="txtAutor" placeholder="Autor..." />
                <input type="text" name="txtISBN" class="form-control" id="txtISBN" placeholder="ISBN..." />
            </div>              
            <center>
           @Ajax.ActionLink("Szukaj", "SzukajKsiazki", new AjaxOptions()
      
          HttpMethod="GET",
          UpdateTargetId= "divKsiazki",
          InsertionMode= InsertionMode.Replace
      )
            </center>
        </div>
        <div id="divKsiazki"class="col-md-10 ">  
        </div>
</div>
</div>
</div>

这是显示数据库数据的视图:

@model IEnumerable<TwojaBiblioteka.Models.Ksiazka>
<table class="table" style="border:1px solid black;">
<tr>
    <th>
        @html.DisplayNameFor(model => model.Tytul)
    </th>
    <th>
        @Html.DisplayNameFor(model => model.Autor)
    </th>
    <th>
        @Html.DisplayNameFor(model => model.ISBN)
    </th>       
</tr>
@foreach (var item in Model) 
<tr>
    <td>
        @Html.DisplayFor(modelItem => item.Tytul)
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.Autor)
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.ISBN)
    </td>      
</tr>

</table>

这是我的控制器:

public PartialViewResult SzukajKsiazki()
    
    string tytul="something";

        var ksiazkilist = db.Ksiazka.Where(x => x.Tytul == tytul).ToList();
        return PartialView("_ListaKsiazek",wypozyczone);
    

那么我如何将数据从我的文本框传递到控制器以仅显示那些包含文本框文本的记录?

【问题讨论】:

【参考方案1】:

你的控制器动作应该接受一个参数。在 Asp.Net MVC 中,这是正常的模型:

public PartialViewResult SzukajKsiazki(IEnumerable<TwojaBiblioteka.Models.Ksiazka> model)

您的视图应该包含模型中的所有编辑器元素,并且您需要一个提交按钮:

@using (Html.BeginForm("SzukajKsiazki", "ControllerName", FormMethod.Post)

<table class="table" style="border:1px solid black;">
<tr>
<th>
    @Html.DisplayNameFor(model => model.Tytul)
</th>
<th>
    @Html.DisplayNameFor(model => model.Autor)
</th>
<th>
    @Html.DisplayNameFor(model => model.ISBN)
</th>       
</tr>
@foreach (var item in Model) 
<tr>
<td>
    @Html.DisplayFor(modelItem => item.Tytul)
</td>
<td>
    @Html.DisplayFor(modelItem => item.Autor)
</td>
<td>
    @Html.DisplayFor(modelItem => item.ISBN)
</td>      
</tr>

</table>
<input type="submit" value="submit">
 

【讨论】:

以上是关于asp.net mvc 在视图和控制器之间传递参数的主要内容,如果未能解决你的问题,请参考以下文章

将模型传递给 ASP.NET Core MVC 中的视图

将多个参数从 ajax post 传递到 asp.net mvc 控制器

如何在asp.net mvc中将数据从视图传递到控制器

在 ASP.Net-MVC 中的控制器之间传递信息

在 ASP.Net MVC (LINQ) 中将嵌套数据从控制器传递到视图

ASP.NET MVC & C#:将视图模型传递给控制器