使用C#.Net Core,如何将文本框的内容传递给模式

我目前正在使用一个视图(在C#.Net Core 2.1 Web应用程序中)使用一个“搜索字符串”文本框和一个“添加项”按钮,该视图应打开一个具有以下内容的模式:匹配搜索字符串的所有项目列表(来自数据库),并带有“选择”按钮或链接以添加该项目。

但是我不知该如何将文本框结果传递给模态操作。

注意:我知道我有一个解决方法,可以将其编码为完全独立的视图/动作(即不是模态),可能在现有的表单提交动作中添加逻辑,但是如果我可以保留模态的想法。

这是到目前为止我尝试过的代码(但无济于事):

控制器:

    public IactionResult AddItem(string SearchString)
    {
        var model = _context.BasicItems
            .Where(i => i.Name.Contains(SearchString));

        return PartialView("_AddKitItem",model);
    }

在视图中,我有文本框和按钮(现在我使用的是ViewModel而不是原始的Model实体-注意:ViewModel只是包含要使用的原始实体的对象。情况称为工具包-以及名为SearchString的字符串):

<div id="modal-placeholder"></div>

(然后是其他一些控件)

            <label asp-for="SearchString" class="control-label"></label>
            <input asp-for="SearchString" class="form-control" />


            <button type="button" class="btn btn-primary" data-toggle="ajax-modal" data-target="#add-item" data-url="@Url.action("AddItem")">
                Search Item To Add
            </button>

我还有以下JS代码(我是从示例代码中提取的)

$(function () {
    var placeholderElement = $('#modal-placeholder');

    $('button[data-toggle="ajax-modal"]').click(function (event) {
        var url = $(this).data('url');
        $.get(url).done(function (data) {
            placeholderElement.html(data);
            placeholderElement.find('.modal').modal('show');
        });
    });

    placeholderElement.on('click','[data-save="modal"]',function (event) {
        event.preventDefault();

        var form = $(this).parents('.modal').find('form');

        var actionUrl = form.attr('action');

        var dataToSend = form.serialize();

        $.post(actionUrl,dataToSend).done(function (data) {

            var newBody = $('.modal-body',data);
            placeholderElement.find('.modal-body').replaceWith(newBody);

            var isValid = newBody.find('[name="IsValid"]').val() == 'True';
            if (isValid) {
                placeholderElement.find('.modal').modal('hide');
            }
        });
    });
});

如果这样做不起作用(通过在控制器中AddItem操作的第一行上放置一个断点并检查SearchString值-为空),则在主视图上,我将两个SearchString控件替换为以下内容

@Html.DisplayNameFor(model => model.SearchString)
                    :
                    @Html.DisplayFor(model => model.SearchString)

但仍然没有运气-结果相同。

所以我什至尝试过:

Item Name:

                @Html.TextBox("SearchString")

结果还是一样。

aidou309 回答:使用C#.Net Core,如何将文本框的内容传递给模式

斯科特使用

asp-for="@model.SearchString"
本文链接:https://www.f2er.com/3136558.html

大家都在问