I was originally using a IDictonary to store string values in my MVC model - as below:
public IDictionary<string, string> MyValues { get; set; }
MyValues = new Dictionary<string, string>
{
{"Name", "Joe Bloggs"},
{"Address", "Main Street"}
};
The above is set in my model constructor and I also set other values when I get the model by doing:
var model = new MyModel();
model.MyValues .Add("foo", "bar");
In my view then I have the following:
@{
var myValues = Model.MyValues.ToList();
for (int i = 0; i < myValues .Count(); ++i)
{
@Html.Hidden("Id", myValues[i].Key)
@Html.Hidden("Value", myValues[i].Value)
}
}
I need to now change this functionality and instead of an IDictoinary implement this with a Tuple
I have just changed the MyValues in my model so far to be:
public IEnumerable<Tuple<string, string>> MyValues { get; set; }
I am not sure how to implement the same functionality I had in my model constructor, setting other values in the model and then enumerating this in the view.
It is as simple as:
MyValues = new List<Tuple<string,string>>
{
Tuple.Create("Name", "Joe Bloggs"),
Tuple.Create("Address", "Main Street")
};
and:
model.MyValues.Add(Tuple.Create("foo", "bar"));
and:
@{
var myValues = Model.MyValues;
foreach (var tuple in myValues)
{
@Html.Hidden("Id", tuple.Item1);
@Html.Hidden("Value", tuple.Item2);
}
}
But you should change MyValues from being IEnumerable to IList or ICollection better, to say that adding is possible.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With