简体   繁体   English

如何将列表从视图发送到控制器 MVC

[英]How to send list from view to controller MVC

I have view model:我有视图模型:

public class AvailableTimesViewModel
{
    public AvailableTimesViewModel() { }

    public AvailableTimesViewModel(List<DateTime> list)
    {
        availableTimesList = new List<DateTime>();
        if (list != null && list.Any())
        {
            foreach (var l in list)
            {
                availableTimesList.Add(l);
            }        
        }
    }

    public List<DateTime> availableTimesList { get; set; }
}

My view:我的观点:

@model ViewModels.AvailableTimesViewModel
@{
ViewBag.Title = "AvailableTimes";
}
<p>
 @Html.ActionLink("Create New", "Create")
 </p>
 <table class="table">

 List<DateTime>avTimes=new List<DateTime>
 @for (var i = 0; i < Model.availableTimesList.Count; i++)
 {
 <tr>
    <td>
        @Html.HiddenFor(x => x.availableTimesList[i])
        @Model.availableTimesList[i].TimeOfDay
        @Html.ActionLink("Book", "BookVisit", new { date =   Model.availableTimesList[i].TimeOfDay, avTimes = Model.availableTimesList },null)   |
        @Html.ActionLink("Details", "Details", new { /* id=item.PrimaryKey */    }) |
        @Html.ActionLink("Delete", "Delete", new { /* id=item.PrimaryKey */ })
    </td>

    </tr>
 }
 </table>

and controller:和控制器:

public ActionResult BookVisit(DateTime date,List<DateTime> avTimes)
    {
        return View();
    }

Question is: how to send second argument from ActionLink(avTimes=Model.availableTimesList) to controller.问题是:如何将第二个参数从 ActionLink(avTimes=Model.availableTimesList) 发送到控制器。 In other words - how to send list rendered in the view to the controller.换句话说 - 如何将视图中呈现的列表发送到控制器。

First of all, you do not need to initialize or define avTimes before passing it as route data value.首先,您不需要在将avTimes作为路由数据值传递之前对其进行初始化或定义。 This line is not needed:不需要此行:

List<DateTime>avTimes = new List<DateTime>

That being said, you cannot pass collections as Route Data values - it does not work and is not best practice anyway.话虽如此,您不能将集合作为 Route Data 值传递 - 它不起作用,也不是最佳实践。

Since @Html.ActionLink produces link like http://domainname.com/bookvisit/book?abc=1&bcd=ldf&ctf=5 , I don't think it's a good practice to have a full list values appended in the url.由于@Html.ActionLink产生类似http://domainname.com/bookvisit/book?abc=1&bcd=ldf&ctf=5的链接,我认为在 url 中附加完整的列表值不是一个好习惯。

What you are trying to do can be achievable this way:您正在尝试做的事情可以通过这种方式实现:

@{var myObjectWrapper = new MyObjectWrapper(){Data = @Model.availableTimesList };}

@Html.Action("Book", "BookVisit", 
            new { date =   Model.availableTimesList[i].TimeOfDay, avTimes = myObjectWrapper } ,null)

And your action method:和你的行动方法:

public ActionResult BookVisit(DateTime date, MyObjectWrapper  avTimes)
{
    vat myList = avTimes.Data;
    return View();
}

Hope that helps.希望有帮助。

Add your "list" to the AvailableTimesViewModel将您的“列表”添加到 AvailableTimesViewModel

 public class AvailableTimesViewModel
{
    public string MyFirstProperty { get; set; }
    public List<DateTime> availableTimesList { get; set; }
}

Then pass this as your model.然后将其作为您的模型传递。

You should also use a partial view to display your Available Times too.您还应该使用局部视图来显示您的可用时间。

如何发送“列表<object> ” object 从视图到 Controller?<div id="text_translate"><p> 我想将对象列表从视图传递到控制器的操作。 我将“List&lt;API_VM&gt; model, IList&lt;API_VM&gt; model, API_VM[] 模型”作为操作参数,我将“IList&lt;API_VM&gt;, List&lt;API_VM&gt;”作为 Z20F35E630DAF3994DB8 查看页面上的 Z20F35E630DAF3994DBFA 给出。 但它不起作用。 Model 一直是 null。</p><pre> [HttpGet] public IActionResult UrunlerListe(API_VM model) { XElement stok = XElement.Load(model.TedarikciLink); List&lt;API_VM&gt; ApiList = new List&lt;API_VM&gt;(); model.Stoklar = stok.Descendants(model.ParentElement).ToList(); ViewBag.Tedarikci = model.TedarikciLink; foreach (var item in model.Stoklar) { API_VM api = new API_VM(); api.UrunAdi = item.Element(model.UrunAdi).Value; api.Kategori = item.Element(model.Kategori).Value; api.UrunAciklama = item.Element(model.UrunAciklama).Value; api.UrunFiyat = item.Element(model.UrunFiyat).Value; api.UrunMarka = item.Element(model.UrunMarka).Value; api.PaketAgirligi = item.Element(model.PaketAgirligi).Value; api.PaketGenisligi = item.Element(model.PaketGenisligi).Value; api.PaketUzunlgu = item.Element(model.PaketUzunlgu).Value; api.PaketYuksekligi = item.Element(model.PaketYuksekligi).Value; api.StokAded = item.Element(model.StokAded).Value; api.UrunFoto1 = item.Element(model.UrunFoto1).Value; api.UrunFoto2 = item.Element(model.UrunFoto2).Value; api.UrunFoto3 = item.Element(model.UrunFoto3).Value; api.UrunFoto4 = item.Element(model.UrunFoto4).Value; api.UrunFoto5 = item.Element(model.UrunFoto5).Value; api.UrunFoto6 = item.Element(model.UrunFoto6).Value; ApiList.Add(api); } return View(ApiList); }</pre><p></p><div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false"><div class="snippet-code"><pre class="snippet-code-html lang-html prettyprint-override"> @model IList&lt;API_VM&gt; @{ ViewData["Title"] = "UrunlerListe"; Layout = "~/Views/Shared/_Layout.cshtml"; } &lt;form asp-action="UrunlerListe" method="post"&gt; @for (int i = 0; i &lt;Model.Count(); i++) { @Html.TextBoxFor(model =&gt; Model[i].UrunAdi) } &lt;input type="submit" value="ürünleri gönder" /&gt; &lt;/form&gt;</pre></div></div><p></p><pre> [HttpPost] public IActionResult UrunlerListe(API_VM[] model) { //work }</pre></div></object> - How can I send “List<Object>” object from View to Controller?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 从MVC中的视图向控制器发送字符串的动态列表 - Send dynamic list of strings to controller from view in MVC 如何将列表从视图传递到 MVC 控制器 - How to pass a list from view to a MVC controller 如何从MVC视图将下拉列表选择的值发送到控制器的变量ViewData? - How to send a dropdown list selected value from MVC view to controller's variable ViewData? MVC Ajax:如何将字符串从视图发送到控制器 - MVC Ajax: How to send string from view to controller 从控制器发送图像到MVC3中查看 - Send Image From Controller To View In MVC3 如何将对象和图像列表从 jquery 发送到 mvc 控制器 - How to send List of objects and image from jquery to mvc controller 如何发送“列表<object> ” object 从视图到 Controller?<div id="text_translate"><p> 我想将对象列表从视图传递到控制器的操作。 我将“List&lt;API_VM&gt; model, IList&lt;API_VM&gt; model, API_VM[] 模型”作为操作参数,我将“IList&lt;API_VM&gt;, List&lt;API_VM&gt;”作为 Z20F35E630DAF3994DB8 查看页面上的 Z20F35E630DAF3994DBFA 给出。 但它不起作用。 Model 一直是 null。</p><pre> [HttpGet] public IActionResult UrunlerListe(API_VM model) { XElement stok = XElement.Load(model.TedarikciLink); List&lt;API_VM&gt; ApiList = new List&lt;API_VM&gt;(); model.Stoklar = stok.Descendants(model.ParentElement).ToList(); ViewBag.Tedarikci = model.TedarikciLink; foreach (var item in model.Stoklar) { API_VM api = new API_VM(); api.UrunAdi = item.Element(model.UrunAdi).Value; api.Kategori = item.Element(model.Kategori).Value; api.UrunAciklama = item.Element(model.UrunAciklama).Value; api.UrunFiyat = item.Element(model.UrunFiyat).Value; api.UrunMarka = item.Element(model.UrunMarka).Value; api.PaketAgirligi = item.Element(model.PaketAgirligi).Value; api.PaketGenisligi = item.Element(model.PaketGenisligi).Value; api.PaketUzunlgu = item.Element(model.PaketUzunlgu).Value; api.PaketYuksekligi = item.Element(model.PaketYuksekligi).Value; api.StokAded = item.Element(model.StokAded).Value; api.UrunFoto1 = item.Element(model.UrunFoto1).Value; api.UrunFoto2 = item.Element(model.UrunFoto2).Value; api.UrunFoto3 = item.Element(model.UrunFoto3).Value; api.UrunFoto4 = item.Element(model.UrunFoto4).Value; api.UrunFoto5 = item.Element(model.UrunFoto5).Value; api.UrunFoto6 = item.Element(model.UrunFoto6).Value; ApiList.Add(api); } return View(ApiList); }</pre><p></p><div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false"><div class="snippet-code"><pre class="snippet-code-html lang-html prettyprint-override"> @model IList&lt;API_VM&gt; @{ ViewData["Title"] = "UrunlerListe"; Layout = "~/Views/Shared/_Layout.cshtml"; } &lt;form asp-action="UrunlerListe" method="post"&gt; @for (int i = 0; i &lt;Model.Count(); i++) { @Html.TextBoxFor(model =&gt; Model[i].UrunAdi) } &lt;input type="submit" value="ürünleri gönder" /&gt; &lt;/form&gt;</pre></div></div><p></p><pre> [HttpPost] public IActionResult UrunlerListe(API_VM[] model) { //work }</pre></div></object> - How can I send “List<Object>” object from View to Controller? 如何将列表从控制器/视图发送到JS脚本 - How to send List from controller/View to JS script 如何从 C# controller 发送 2 个列表以使用 ViewBag 查看 - How send 2 List from C# controller to view with ViewBag C#如何将数据列表从视图中获取到MVC 3中的控制器 - C# how to get list of data from view into controller in MVC 3
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM