Asp.net mvc 不会从 Html.Action 发布到服务器表单数据
本文关键字:服务器 数据 表单 Action Html mvc net Asp | 更新日期: 2023-09-27 18:34:38
>我的表单中有这样的代码
@foreach (var option in Model.Options)
{
@Html.Action("GetQuestionOption", new { optionId = option.Id })
}
这是控制器和部分视图
public ActionResult GetQuestionOption(int? optionId = null)
{
var option = optionId.HasValue ? UnitOfWork.OptionRepository.GetById(optionId.Value) : new QuestionOption();
return PartialView("_Option", option);
}
部分视图
@model QuestionOption
<div class="option-box">
@Html.HiddenFor(model => model.Id)
<div>
@Html.TextBoxFor(model => model.OptionText)
</div>
<div>
@Html.ValidationMessageFor(model => model.OptionText)
</div>
</div>
但是,当我提交表单时,此数据不会发布到服务器,并且选项始终为空。我想这没有映射到选项。我怎样才能使它工作?
附言我还在那里添加了带有javascript的选项
$.ajax({
type: "POST",
url: "/Contr/GetQuestionOption",
success: function (data) {
$("#options").append(data);
}
});
您的
分部视图中,您必须将字段放在表单中,并给出 ID
@model QuestionOption
@using (Html.BeginForm("GetQuestionOption", "YourControllerName", FormMethod.Post, new { id = "myId" }))
{
<div class="option-box">
@Html.HiddenFor(model => model.Id)
<div>
@Html.TextBoxFor(model => model.OptionText)
</div>
<div>
@Html.ValidationMessageFor(model => model.OptionText)
</div>
</div>
<input id="postForm" type="submit" value="Save" class="btn btn-primary pull-right" />
}
阿贾克斯请求:
$('#postForm').click(function(e){
e.preventDefault();
$.ajax({
data: $('#myId').serialize(),
type: "POST",
url: "/Contr/GetQuestionOption",
success: function (data) {
$("#options").append(data);
}
});
});