ASP MVC.NET - как связать KeyValuePair?

Ваш вопрос сформулирован таким способом, которым он предлагает мне, чтобы Вы не полностью понимали блокировку. Вы не блокируете данные, Вы блокируете для защиты целостности данных. Объект, который Вы соединяете, несуществен. То, что имеет значение, - то, что Вы соединяете тот же объект в других областях Вашего кода, которые изменяют защищаемые данные.

11
задан Erik Funkenbusch 22 September 2012 в 19:58
поделиться

2 ответа

KeyValuePair - это структура, а не класс, поэтому каждый вызов вашего свойства Stuff возвращает копия исходного KeyValuePair . Итак, когда вы привязываетесь к Model.Stuff.Value и Model.Stuff.Key , вы фактически работаете с двумя разными экземплярами KeyValuePair , ни одна из которых не соответствует вашей модели. Поэтому, когда они обновляются, это не обновляет свойство Stuff в вашей модели ... QED

Кстати, свойства Key и Value доступны только для чтения, поэтому вы не можете их изменять: вам нужно заменить экземпляр KeyValuePair

Следующее временное решение должно работать:

Модель:

private KeyValuePair<string, string> _stuff;
public KeyValuePair<string, string> Stuff
{
    get { return _stuff; }
    set { _stuff = value; }
}

public string StuffKey
{
    get { return _stuff.Key; }
    set { _stuff = new KeyValuePair<string, string>(value, _stuff.Value); }
}

public string StuffValue
{
    get { return _stuff.Value; }
    set { _stuff = new KeyValuePair<string, string>(_stuff.Key, value); }
}

Просмотр:

<%=Html.Text("Stuff", Model.StuffValue)%>    
<%=Html.Hidden("Model.StuffKey", Model.StuffKey)%>
8
ответ дан 3 December 2019 в 10:44
поделиться
<%=Html.Text("Stuff.Value", Model.Stuff.Value)%>

Может сработать?

0
ответ дан 3 December 2019 в 10:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: