使用ajax将字符串传递给控制器

时间:2019-04-24 17:38:39

标签: jquery ajax razor asp.net-core-mvc

我要在系统中查找用户的搜索字段...我将在该字段中写入用户名,而ajax函数会将名称从搜索字段传递给控制器​​中的方法,此方法将返回所有用户的numerable那些具有相同的名称...。当我传递用户ID时,它可以成功工作,并且我获得了特定的用户,因为我传递了int值...但是当我传递字符串时出现了问题...所以如何传递用户名到使用ajax的控制器。

这是视图标记

    <div class="form-group">
        <label asp-for="ResearchAuthor.ApplicationUserId" class="control-label"></label>
        <input id="user"  asp-for="ResearchAuthor.ApplicationUserId" class="form-control" asp-items="ViewBag.ApplicationUserId" />
        <a id="srch" class="btn btn-success">بحث</a>
    </div>
    <select id="add" asp-for="ResearchAuthor.ApplicationUserId" class="form-control" asp-items="ViewBag.ApplicationUserId">
        <option>@Localizer["إختر المستخدم"]</option>
    </select>

和ajax代码

       <script>
    $("#add").empty();

    $(document).ready(function () {
        $("#srch").click(function () {
            $("#add").empty();
            $("#add").append($('<option>', { text: "@Localizer["إختر نوع المقالة"]" }));
            //if ($("#user").val() > 0) {
                var useroptions = {};
            useroptions.url = "/@CultureInfo.CurrentCulture.Name/ResearchAuthors/GetUsers/";
            useroptions.data = JSON.stringify($("#user").val(););
                useroptions.success =  function (data) {
                    $.each(data, function (index, row) {
                        $("#add").append($('<option>', { value: row.value, text: row.text }))
                    });
                };
                useroptions.error = function () { alert("@Localizer["UniError"]"); };
                $.ajax(useroptions);
            //}
        });
    });
</script>

以及控制器中的功能:

   [AllowAnonymous]
    public JsonResult GetUsers(string SearchString)
    {
        var users = new SelectList(_context.ApplicationUsers.Where(u=>u.ArName==SearchString), "Id", "ArName");
        return Json(users);
    }

1 个答案:

答案 0 :(得分:-1)

您必须在后端检查它。如果可以,则为int,那么可以,但是如果可能,则尝试将其转换为int。