В настоящее время я делаю этот учебник http://blog.stevensanderson.com/2010/01/28/editing-a-variable-length-list-aspnet-mvc-2-style/.ASP.NET MVC4 рендеринг частичных просмотров
Проблема с моей заключается в том, что она не отображает страницу, а перенаправляет меня на новое действие с новой формой. Что мне не хватает и как это исправить? Вот код.
Модель:
namespace MvcPartialsExample.Models
{
public class Gift
{
public string Name { get; set; }
public double Price { get; set; }
}
}
Контроллер
public class HomeController : Controller
{
public ActionResult Index()
{
var initialData = new[] {
new Gift { Name = "Tall Hat", Price = 39.95 },
new Gift { Name = "Long Cloak", Price = 120.00 },
};
return View(initialData);
}
[HttpPost]
public ActionResult Index(Gift g)
{
return View();
}
[HttpGet]
public ViewResult BlankEditorRow()
{
return View("GiftEditorRow" , new Gift());
}
}
Index.cshtml:
@model IEnumerable<MvcPartialsExample.Models.Gift>
<script src="~/Scripts/listEditor.js"></script>
@using(Html.BeginForm()) {
<div class="editorRows">
@foreach (var item in Model)
{
Html.RenderPartial("GiftEditorRow", item);
}
</div>
<p>
@Html.ActionLink("Add Gift", "BlankEditorRow", null, new { id = "addItem" })
<input type="submit" value="Create" />
</p>
}
GiftEditorRow.cshtml
@model MvcPartialsExample.Models.Gift
<div ="editorRow">
@using (Html.BeginCollectionItem("gifts")) {
@Html.ValidationSummary(true)
@Html.LabelFor(model => model.Name)
@Html.EditorFor(model => model.Name)
@Html.LabelFor(model => model.Price)
@Html.EditorFor(model => model.Price)
<a href="#" class="deleteRow">delete</a>
}
</div>
скрипт
<script type="text/javascript">
$("#addItem").click(function() {
$.ajax({
url: this.href,
cache: false,
success: function (html) { $("#editorRows").append(html); }
});
return false;
});
$("a.deleteRow").live("click", function() {
$(this).parents("div.editorRow:first").remove();
return false;
});
</script>
Вам нужно '' GiftEditorRow.ascx' не GiftEditorRow.cshtml' –
Не связан, но ваш метод POST должен быть 'IEnumerable g', и ему нужно быть' @using (Html.BeginCollectionItem()) '(без префикса) и' .live' был обесценен. Ваш скрипт попал?, Есть ли у вас какие-либо ошибки в консоли? –
Что делает BeginCollectionItem? Не могу увидеть это по ссылке – mitomed