【问题标题】:How to read value from partial view in ASP.NET MVC controller如何从 ASP.NET MVC 控制器的局部视图中读取值
【发布时间】:2022-01-09 19:18:09
【问题描述】:

我来自 ASP.NET 背景并开始使用 ASP.NET MVC,所以不确定我在这里做错了什么或缺少一些基本的理解。

我有一个PartialView,如下图:

@{
    Layout = "master.cshtml";
    ContactForm form= new ContactForm();
    form.Message = "Thank you, we shall be in touch";
}

我的模型具有Message 属性,但没有仅在上面的 PV 中设置在我的控制器中。目的是 Message 对于不同的形式可能会有所不同。

我有一个发送电子邮件的方法(这很好并且有效,发送表单中的所有字段)但我希望Message 成为form.Message 中的一个集合,以便在表单发送时一起发送已提交。

我阅读了ViewBag,但我认为这是从控制器到 PV 的温度值。

代码运行并在我在调试时建立的初始加载时设置Message 的值。

一旦到达发送电子邮件的方法(单击按钮后),所有其他字段都会加载,除了 PV 上设置的 Message 值。

如何将Message 从局部视图传递给我的控制器?

【问题讨论】:

    标签: c# asp.net-mvc


    【解决方案1】:

    如果您希望将值发送到控制器,一旦提交表单,您必须为此消息声明一个隐藏字段,记住隐藏字段必须放在表单内,以便发送到控制器。

    @using (Html.BeginForm("YourAction", "YourController", FormMethod.Post))
    {
        @Html.HiddenFor(model => model.Message)
        
        // Your form content comes here...
    }
    

    【讨论】:

      【解决方案2】:

      实际上,如果你像这样使用 HtmlTagHelper,你可以发送你的模型

      @model List<Models.MyModel>
      
      @Html.Partial("MyPartialName",@Model)

      你必须像这样从控制器发送你的模型

      public IActionResult Index()
      {
      .....
      ....
      return View(MyModel);
      }

      您必须在 Share 文件夹中创建您的部分 .cshtml。这很重要

      【讨论】:

        【解决方案3】:

        person.cs

           public class Person{
               public int Id {get;set;}
               public string personName {get;set;}
               public string contact {get;set;}
           }
        

        MVC 控制器

            public ActionResult YourMethod(Person){
                 //Your Operations
           }
        }
        

        MainView.cshtml

        <form action="YourMethod" method="post">
            <input type="text" name = "personName" >
            @Html.partial("PartialExample");
            <input type="submit" value="submit">
        
        </form>
        

        _PartialExample.cshtml

           <input type="text" name="contact" >
        

        【讨论】:

          最近更新 更多