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);
            }
        });

Asp.net mvc 不会从 Html.Action 发布到服务器表单数据

您的

分部视图中,您必须将字段放在表单中,并给出 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);
                }
            });
});