gpt4 book ai didi

asp.net-mvc - ASP.NET MVC,将模型从 View 传递到 Controller

转载 作者:行者123 更新时间:2023-12-02 05:06:23 25 4
gpt4 key购买 nike

我在使用 ASP.NET MVC 以及将数据从 View 传递到 Controller 时遇到问题。我有一个这样的模型:

 public class InputModel {
public List<Process> axProc { get; set; }

public string ToJson() {
return new JavaScriptSerializer().Serialize(this);
}
}

public class Process {
public string name { get; set; }
public string value { get; set; }
}

我在 Controller 中创建此输入模型并将其传递给 View :

public ActionResult Input() {
if (Session["InputModel"] == null)
Session["InputModel"] = loadInputModel();
return View(Session["InputModel"]);
}

在我的 Input.cshtml 文件中,我有一些代码来生成输入表单:

@model PROJ.Models.InputModel

@using(Html.BeginForm()) {
foreach(PROJ.Models.Process p in Model.axProc){
<input type="text" />
@* @Html.TextBoxFor(?? => p.value) *@
}
<input type="submit" value="SEND" />
}

现在,当我单击提交按钮时,我想使用放入文本字​​段的数据。

问题 1: 我见过这个 @Html.TextBoxFor(),但我并没有真正理解这个“stuff => otherstuff”。我的结论是“otherstuff”应该是我想要写入数据的字段,在这种情况下它可能是“p.value”。但是箭头前面的“东西”是什么?

回到 Controller ,然后我有一个带有一些调试的 POST 函数:

[HttpPost]
public ActionResult Input(InputModel m) {
DEBUG(m.ToJson());
DEBUG("COUNT: " + m.axProc.Count);

return View(m);
}

这里调试仅显示如下内容:

{"axProc":[]}
COUNT: 0

所以我得到的返回模型是空的。

问题 2: 我是否对这个 @using(Html.BeginForm()) 做了一些根本性的错误?这不是正确的选择吗?如果是这样,我如何将充满数据的模型返回到 Controller ?
(我不能在这里使用“@model List ”(因为上面的例子是缩写的,在实际的代码中会有更多的东西)。)

我希望有人可以向我补充一些我忽略的细节。

最佳答案

将您的 View 更改为类似这样的内容,以便在表单提交时正确绑定(bind)列表。

@using(Html.BeginForm()) {
for(int i=0;i<Model.axProc.Count;i++){
<span>
@Html.TextBoxFor(model => model.axProc[i].value)
</span>
}
<input type="submit" value="SEND" />
}

关于asp.net-mvc - ASP.NET MVC,将模型从 View 传递到 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10817347/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com