如何在表单 Post 上获取所选单选按钮标签助手的硬编码值

How to get hard coded value of selected Radio Button tag helper on Form Post

如果不在 ViewModel 中定义 属性 来保持 input 类型 radio 标签的 value attribute 的值,上述是否可行?例如,在下面的 view 中,如果用户选择 In-Store 单选按钮,我希望 SelectedOrderType 属性 保持 1,如果 Online 单选按钮则保持 2被选中。 但是当提交表单时,无论选择了哪个单选按钮,SelectedOrderType 属性 始终保持值 1。 注意:加载表单时,默认选中第一个单选按钮。但是用户当然可以在提交表单之前检查两者中的任何一个。 注意 2:表单是通过下面 view 中的 Ajax 调用提交的:

View with Form with Radio Button tag helper:

@model TestProj.Models.TestViewModel

<ul class="nav nav-tabs">
    <li class="active"><a data-toggle="tab" href="#menu1">Add Order</a></li>
</ul>
<div class="tab-content">
    <div id="menu1" class="tab-pane in active">
        <form asp-controller="TestContrl" asp-action="TestAction" method="post">
            <div asp-validation-summary="All" class="text-danger"></div>
            <div class="radio">
                <label><input asp-for="SelectedOrderType" type="radio" value="1" checked="checked">In-Store</label>
            </div>
            <div class="radio">
                <label><input asp-for="SelectedOrderType" type="radio" value="2">Online</label>
            </div>
            <div>
                ....
                ....
                <button type="button" class="btn btn-info btn-xs">Submit Order</button>
            </div>
        </form>
    </div>
 </div>


@section scripts
{
    <script>
        $(document).ready(function () {
            $('.tab-content').on('click', '.btn', function (event) {

                var selectedOrderTypeVal = $('#SelectedOrderType').val();

                $.ajax({
                    url: '@Url.Action("TestContrl", "TestAction")',
                    data: { SelectedOrderType: selectedOrderTypeVal },
                    contentType: 'application/json',
                    dataType: 'html',
                    type: 'GET',
                    cache: false,
                    success: function (data) {
                        $('#menu1').html(data);
                    },
                    error: function (jqXHR, textStatus) {
                        alert('jqXHR.statusCode');
                    }
                });
            });
        });
    </script>
}

查看模型:

public class TestViewModel
{
     public string SelectedOrderType { get; set; }

     public string CustormerName{ get; set; }
}

生成的 Html 视图的快照:

<html>
....
<div class="radio">
        <label><input type="radio" value="1" checked="checked" data-val="true" data-val-required="The SelectedProjType field is required."
    id="SelectedOrderType" name="SelectedOrderType">In-Store</label>
</div>
<div class="radio">
        <label><input type="radio" value="2" id="SelectedOrderType" name="SelectedOrderType">Online</label>
</div>
....
</html>

我上面 Ajax 代码中的以下代码是问题所在。

var selectedOrderTypeVal = $('#SelectedOrderType').val();

按照说明应该是下面的here:

var selectedProjTypeVal = $('[name=SelectedProjType]:checked').val();

也有兴趣 [如果您想使用 ViewModels]:

  1. 勾选