如何设置基于 Jquery 中的下拉列表的选定值并将其分配给我的模型?

How do I set selected value that is base on drop-down list in Jquery and assign it to my model?

我需要在用户单击特定选项后将选项中的值分配给我的模型。

<select name="isEmailVerified" class="form-select">
                                <option value="" selected> all </option>
                                <option value="true"> verified </option>
                                <option value="false"> unverified </option>
                            </select>

期望值=>@Model.IsEmailVerified.XXXXX(我的值)

当我想异步来回发送数据时,我通常做的是:

  1. 我利用了 Tag Helpers,因为它们很棒并且可以为您节省大量样板代码,所以我创建了一个标准 <form> 元素 没有 一个实际的 Submit 按钮,只是一个看起来像一个的 div。您可能需要查看 Select Tag Helper 的官方 MSDN 文档以创建合适的模型。

    @model VerificationModel
    
    <form asp-action="CheckEmail" method="post">
      <select asp-for="IsEmailVerified" asp-items="Model.VerificationTypes">
     <div id="SubmitCheck" class="btn">Check email</div>
    </form>
    
  2. 创建一个 javascript 函数来处理实际的提交工作。由于表单是使用 Tag Helpers 创建的,请求主体将自动绑定

    $('#SubmitCheck').on('click', function() {
      let form = $(this).parents('form')[0];
      let formData = new FormData(form);
    
      let request = function () {
        return fetch(form.getAttribute('action'), {
          method: 'POST',
          body: formData
        });
      };
    
      let onresponse = function() {
        // do some preliminary actions on 200 response
      }
    
      let callback = function() {
        // deal with response result
      }
    
      let onerror = function() {
        // deal with errors
      }
    
      request()
       .then(response => onresponse())
       .then(result => callback())
       .fail(err => onerror());
    })
    
  3. [FromForm]属性添加到Controller props(模型与页面中使用的相同)以确保模型绑定

    public async Task<CustomResultClass> CheckEmail([FromForm] VerificationModel model)
    { 
       // do something
    }