gpt4 book ai didi

c# - 将 ListBoxFor (Multiple) 绑定(bind)回模型

转载 作者:太空宇宙 更新时间:2023-11-03 16:32:19 25 4
gpt4 key购买 nike

我有一个 MVC View ,它使用下面的 Razor 语法呈现基本上等同于 KeyValuePair 的内容,然后生成以下 HTML。

@Html.DropDownListFor(x => x.SelectedItems, new SelectList(Model.SelectedItems, "Key", "Key"), new { Class = "selectList selectedList", size = "2" })

HTML:

<select class="selectList selectedList" id="SelectedItems" name="SelectedItems" size="2">
<option value="842">Item 1</option>
<option value="326">Item 2</option>
<option value="327">Item 3</option>
</select>

我正在使用 Jquery 和通用函数手动发布表单来发布我们的表单,如下所示:

function GenericSubmit(formSelector, sender, callback) {
if (typeof (sender) != "undefined" && $(sender).hasClass('disabled')) {
return false;
}

var $that = $(formSelector);
var that = $that.get(0);
if ($that.valid()) {
$.ajax({
url: that.action,
type: that.method,
data: $(that).serialize(),
success: function (data, textStatus, jqXHR) {
callback.call(that, data);
}
});
}
return false;
}

但是我遇到的问题是,只有发送的数据才是实际值(我希望这就是 JQ 的工作方式......),但我需要绑定(bind)到 IEnumerable。

通过查看发送到表单的 POST 数据,我只能看到发送了以下值 - 我想这就是为什么我的模型有一个空集合。

SelectedItems:842
SelectedItems:326
SelectedItems:327

我的模型如下:

/// <summary>
/// An response for dealing with list type entities
/// </summary>
public class ListEntityResponse : EntityScreenResponse
{
/// <summary>
/// Contains a Enumerable of items that can be selected
/// </summary>
public List<KeyValueViewModel> AvailableItems { get; set; }

/// <summary>
/// Contains a Enumerable of items that have been selected
/// </summary>
public List<KeyValueViewModel> SelectedItems { get; set; }

public ListEntityResponse()
{
AvailableItems = new List<KeyValueViewModel>();

SelectedItems = new List<KeyValueViewModel>();
}


}

为了更加清晰 - 这是我的 KeyValueViewModel:

 public class KeyValueViewModel
{
public string Key { get; set; }

public string Value { get; set; }
}

Current Results

我为此进行了高低搜索,但似乎找不到任何关于该主题的有用信息,我们将不胜感激!

谢谢,

最佳答案

//刚刚意识到我误读了你的问题。

如果你想绑定(bind)多个值,你需要使用 ListBoxFor

//

那么,如果您的后端可能已经拥有这些信息,为什么还需要 Controller 从 View 接收所有这些信息呢?

它只关心您在表单中提交的内容是有意义的。

如果您需要重新填充此数据以再次呈现 View (因为存在验证错误,这是一种优雅的方法)

http://www.paulstovell.com/clean-aspnet-mvc-controllers

关于c# - 将 ListBoxFor (Multiple) 绑定(bind)回模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10452060/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com