如何从 ASP.NET MVC 控制器的局部视图中读取值

Posted

技术标签:

【中文标题】如何从 ASP.NET MVC 控制器的局部视图中读取值【英文标题】:How to read value from partial view in ASP.NET MVC controller 【发布时间】: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 从局部视图传递给我的控制器?

【问题讨论】:

【参考方案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" >

【讨论】:

以上是关于如何从 ASP.NET MVC 控制器的局部视图中读取值的主要内容,如果未能解决你的问题,请参考以下文章

如何在 ASP.NET MVC 中使用 Ajax 调用刷新局部视图?

从asp.net mvc的部分视图中的文本框中获取值

ASP.NET MVC 通用局部视图模式

在 ASP.NET MVC 中使用 jQuery 渲染局部视图

如何将参数传递给 ASP.NET MVC 中的局部视图?

ASP.NET Core MVC 自动完成部分视图不显示结果