如何从 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 调用刷新局部视图?