gpt4 book ai didi

c# - 如何在 MVC 3 中的隐藏对话框中提交字段

转载 作者:太空宇宙 更新时间:2023-11-03 14:09:49 26 4
gpt4 key购买 nike

我在强类型 View 中有一个 MVC 3 表单,其中我需要提交的字段之一位于 jQuery 对话框内。我无法让这个字段成为提交的 POST 参数的一部分。为什么啊为什么?

View :

@model My.Models.DialogFieldModel
@{
ViewBag.Title = "Index";
}

<script type="text/javascript">
$(document).ready(function () {
$('#aDialog').dialog({
autoOpen: true,
height: 250, width: 400,
modal: true,
buttons: {
"Ok!": function () {
$(this).dialog("close");
}
}
});

});
</script>

<h2>Index</h2>

@using (Html.BeginForm("PostDialogField", "DialogField"))
{
@Html.ValidationSummary(true)
<fieldset>

@Html.HiddenFor(m => m.ID)
@Html.DisplayFor(m => m.message)

<div id="aDialog">
<h3>Fill in this message!</h3>
<div class="editor-field">
@Html.EditorFor(m => m.message)
</div>
</div>

<p><input type="submit" value="Submit Message" /></p>

</fieldset>
}


模型:

using System;

namespace My.Models
{
public class DialogFieldModel
{
public int ID { get; set; }
public String message { get; set; }

public DialogFieldModel()
{
message = "Default";
}
}
}


Controller :

using System;
using System.Web;
using System.Web.Mvc;
using WellTrkd.Models;

namespace My.Controllers
{
public class DialogFieldController : Controller
{
public ActionResult Index()
{
DialogFieldModel dfm = new DialogFieldModel(); // set default message
return View(dfm);
}

[HttpPost]
public ActionResult PostDialogField(DialogFieldModel dfm)
{
String message = dfm.message;
if (message != "Default")
//Yay!
return RedirectToAction("Index");
else // Boo
return RedirectToAction("Index");
}

}
}


不幸的是,#message 字段永远不会与其余的 HTML POST 参数一起提交(在 chrome dev View 的网络选项卡中检查),除非我将它从对话框中取出。结果是在 PostDialogField 操作中 dfm.message 包含“默认”字符串,即使我已经更改了对话框中的消息。

我知道我可以在表单中添加一个隐藏字段,该字段与对话框中的字段保持同步,但我觉得我遗漏了一些东西。聪明人有什么想法吗?

最佳答案

您的问题是,您变成对话框的元素从表单移到 DOM 底部的新对话框元素。由于它不再是表单的一部分,因此在提交表单时不会提交它。

如果您在关闭对话框时销毁它,它会被移回原来的位置,但我看不出这是否是我们想要的。另一种选择是同步元素。

关于c# - 如何在 MVC 3 中的隐藏对话框中提交字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8194215/

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