c# - 通过 mvc 转发器发布值

标签 c# .net asp.net-mvc

表格-

@using IEnumerable<Myapplication.Models.CardModel>
    @foreach(var item in Model)
    {

          <form method="post" action="/Upload/EditCard/?cardID=@item.cardID" enctype="multipart/form-data">
                                    <h3>
                                        Change Title-
                                    </h3>
                                    <div class="display-field">
                                        @Html.HiddenFor(m => item.cardTitle)
                                        @Html.TextBoxFor(cardTitle => item.cardTitle)
                                    </div>
                                     <img src="@item.cardFilePath" />
                                    <input type="submit">
                          </form>
    }

方法- [HttpPost]

public void EditCard(CardModel card, HttpPostedFileBase file) {}

在表单中,我通过此表单发送值,cardID 在表单的 url 参数中发送。

cardTitle 等其他值在 EditCard 方法中变为 null。

如何使用中继器获取此值?

但是,当数据不是IEnumerable 类型时,我可以直接通过表单发送值-

@using Myapplication.Models.CardModel

      <form method="post" action="/Upload/EditCard/?cardID=@Model.cardID" enctype="multipart/form-data">
                                <h3>
                                    Change Title-
                                </h3>
                                <div class="display-field">
                                    @Html.HiddenFor(m => m.cardTitle)
                                    @Html.TextBoxFor(m=> m.cardTitle)
                                </div>
                                 <img src="@Model.cardFilePath" />
                                    <input type="submit">
                      </form>
}

但在中继器值不出现在方法的情况下。 只要我更改标题的值或其他任何值,这些值就会变旧。

来自图片-

enter image description here

和服务器代码-

enter image description here

从第一张图片可以看出,表单对于列表中的一条记录是可编辑的。一旦我更改了某些内容,即 Title to --> 2nd Upload2nd Uploadsssss

然后这个值在服务器端为空。我的意思是此表单不发送它的值。

注意-

但是我可以通过参数在 URL 中发送值。但是,如果我确实更改了 Title 或 aboutCard 模型值。表单一直只发送那些在呈现表单时默认出现的值。

最佳答案

与其使用 foreach,不如使用 for 循环。要应用索引,您需要将模型转换为列表

  @{ var list=Model.ToList();)

@for(var i = 1;i <= list.Count();i++)
{   

  <form method="post" action="/Upload/EditCard/?cardID=@list[i].cardID" enctype="multipart/form-data">
                            <h3>
                                Change Title-
                            </h3>
                            <div class="display-field">
                                @Html.HiddenFor(m => list[i].cardTitle)
                                @Html.TextBoxFor(m=> list[i].cardTitle)
                            </div>
                             <img src="@list[i].cardFilePath" />
                                <input type="submit">
  </form>

}

更新..

我已经测试过相同但不起作用。我已经创建了解决方法,检查是否有帮助。

在 Controller 中使用 cardId 获取标题

 var title=Request["[" + (model.cardTitle)+ "].cardTitle"];

可以对模型的其他属性做同样的事情。

请注意,我已经更改了 for 循环,索引现在从 1 开始

关于c# - 通过 mvc 转发器发布值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22372162/

相关文章:

c# - 获取 ASP.NET MVC 4 中按名称给定的方法的属性

c# - 哪些新的 C#/VB 功能需要 .net Framework 4?

LinQ 查询中 lambda 表达式中的 C# 多个变量

c# - 在 ASP.NET MVC 2 Web 应用程序中输出具有 JSON 关系的 LINQ to SQL 实体时出现循环引用错误

c# - Entity Framework : Passing String Parameter to FromSql Statement in Version 2. 2

asp.net-mvc - 将 MembershipProvider 注入(inject) ASP.NET MVC AccountController

c# - 如何从 C# 中的 Windows 窗体应用程序读取 xml 文件

.net - wpf 调整大小完成

c# - 了解编译器优化

asp.net-mvc - 无法检索字体数据 PdfSharp/MigradDoc