Я довольно новичок в Spark, и мне трудно найти ресурсы для простых вопросов, в то время как я часто могу найти ответы в Razor. Хотя по большей части между ними есть хороший переход, в настоящее время я не могу понять, что я делаю неправильно с этим переводом Razor-Spark.
Ситуация такова, что у меня есть модель со списком объектов на ней (и некоторыми другими свойствами). Я хочу иметь возможность отображать список в таблице и иметь возможность редактировать несколько свойств модели в списке. Читая вокруг, лучший способ сделать это - создать шаблон редактора, а затем использовать Html.EditorFor со всем списком. Я попробовал это, и когда я отправляю форму обратно в контроллер, я получаю нулевое значение в качестве опубликованного списка, поэтому я сократил его до набора тестового кода, который инкапсулирует то, что я хочу сделать (свойство readonly int, редактируемый флажок) ) и настройте тестовый контроллер / представления для воспроизведения проблемы.
Контроллер:
public class TestController : Controller
{
public ActionResult ListTest()
{
var model = new List<TestModel>
{
new TestModel {Id = 1, Checked = true},
new TestModel {Id = 2, Checked = true},
new TestModel {Id = 3, Checked = false}
};
return View(model);
}
[HttpPost]
public ActionResult ListTest(List<TestModel> model)
{
return View(model);
}
}
Рабочая бритва:
@model IList<TestModel>
@using (Html.BeginForm("ListTest", "Test", FormMethod.Post))
{
<table style="border: 1px solid">
@Html.EditorFor(x => x)
</table>
<input type="submit" value="Clicky!" />
}
Рабочий шаблон редактора Razor:
@model TestModel
<tr>
<td>
@Html.DisplayFor(x => x.Id)
@Html.HiddenFor(x => x.Id)
</td>
<td>@Html.CheckBoxFor(x => x.Checked)</td>
</tr>
Попытка искры:
<viewdata model="IList<TestModel>" />
<content name="main">
<div id="main">
<form action='' id='testform' method='post'>
<table>
<tr each="var item in Model">
${Html.EditorFor(x => item, "TestModel")}
</tr>
</table>
<input type="submit" value="Clicky!" />
</form>
</div>
</content>
Попытка шаблона Spark Editor:
<viewdata model="TestModel" />
<td>
${Model.Id}
${Html.HiddenFor(x => x.Id)}
</td>
<td>${Html.CheckBoxFor(x => x.Checked)}</td>
К сожалению, я получаю сообщение об ошибке всякий раз, когда пытаюсь настроить Spark таким же образом, как движок Razor, и просто передаю список редактору одного объекта, говоря, что типы не совпадают, и он ожидает один объект а не список, поэтому мне пришлось перечислить список, прежде чем передавать его в шаблон редактора, который, как мне кажется, вызывает проблему.
Я искал вокруг, но не могу найти решение для этого в настоящее время. Я бы хотел использовать Spark для этого, а не создавать только эти виды в Razor, но я не могу понять, как далеко. Единственная область, о которой я еще не знаю, - это привязки внутри Spark, и могут ли они дать мне то, что мне нужно, но любая помощь будет принята с благодарностью.
Приветствия