Я создал динамичную форму для ввода пары ключ-значение, некоторые значения будут содержать запятые:Получать значения, разделенные запятой из формы?
using(Html.BeginForm("Index", "Home", FormMethod.Post, new { id = "parameterForm" }))
{
<div id="inputBoxesDIV">
for(int i = 0; i < Model.GetParameters().Count; i++)
{
Html.TextBoxFor(m => m.GetParameters().ElementAt(i).Name, new { name = "name" + i, size = 20 })
Html.TextBoxFor(m => m.GetParameters().ElementAt(i).Value, new { name = "Value" + i, size = 60 })
}
</div>
}
Я пытался использовать FormCollection, чтобы мои пары, как это:
[HttpPost]
public ActionResult Index(FormCollection formCollection)
{
foreach (var key in formCollection.AllKeys)
{
var value = formCollection[key];
}
foreach (var key in formCollection.Keys)
{
var value = formCollection[key.ToString()];
}
//etc...
Но FormCollection использует строки, разделенные запятой, поэтому это ни к чему хорошему.
Есть ли способ, которым я все еще могу использовать FormCollection или у вас есть идея, как я могу его решить?
Почему бы вам не использовать какую-либо модель как параметр вместо FormCollection –
Этот вид Razor не будет работать. Вы не можете использовать такое сложное выражение Lambda в строго типизированном помощнике, например TextBoxFor: 'm => m.GetParameters(). ElementAt (i) .Name'. Это вызовет исключение. Также вы не можете переопределить свойство 'name', как вы пытаетесь. Помощник всегда будет использовать выражение лямбда для вычисления представления. –
Как я могу это достичь? – Mangs