首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >BeginCollectionItem错误MVC

BeginCollectionItem错误MVC
EN

Stack Overflow用户
提问于 2015-08-13 12:42:55
回答 2查看 658关注 0票数 0

我开始并尝试遵循史蒂夫·桑德森的博客文章,但是它在MVC2中,我使用5,所以我可以在部分上使用动态CRUD。

我在@Html.RenderPartial("GiftEditorRow", item)上得到一个错误,声明表达式不向发件人返回值。

我哪里出问题了?当然,它很简单,但是想了解如何使用这个功能。

编号:索引:

代码语言:javascript
复制
@model IEnumerable<Project.Models.Gift>
@{
    Layout = "~/Views/Shared/_Layout.cshtml";
}

<h2>Gift List</h2>
    What do you want for your birthday?

@using (Html.BeginForm())
{
    <div id="editorRows">
        @foreach (var item in Model)
        {
            @Html.RenderPartial("GiftEditorRow", item)
        }
    </div>
    @Html.ActionLink("Add another...", "BlankEditorRow", null, new {id = "addItem"});
    <input type="submit" value="Finished" />
}

@section scripts {
    <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>
}

部分:

代码语言:javascript
复制
@using HierarchicalControlsDemo.Helpers

<div class="editorRow">
    @using (Html.BeginCollectionItem("gifts"))
    {
    Item: @Html.TextBoxFor(x => x.Name);
    Value: @Html.TextBoxFor(x => x.Price, new { size = 4 });
    <a href="#" class="deleteRow">delete</a>
    }
</div>

型号:

代码语言:javascript
复制
public class Gift
    {
        public string name { get; set; }
        public double price { get; set; }
    }

主计长:

代码语言:javascript
复制
public class GiftController : Controller
    {
        // GET: Gift
        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);
        }
        public ViewResult BlankEditorRow()
        {
            return View("GiftEditorRow", new Gift());
        }
    }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-08-13 13:01:52

RenderPartial()返回void (它写入响应流),因此正确的用法是

代码语言:javascript
复制
@{ Html.RenderPartial(...); }

另外,您需要使用返回一个Partialstring

代码语言:javascript
复制
@Html.Partial(...)

附带注意:删除项的脚本将不适用于动态创建的元素,应该是

代码语言:javascript
复制
$('#editorRows').on('click', '.deleteRow', function() {
    $(this).closest('.editorRow').remove();
});
票数 2
EN

Stack Overflow用户

发布于 2015-08-14 10:11:14

您之所以在Stephen的答案的注释中看到这些错误,是因为您的部分中有一个意外的/不可读的代码。改为:

代码语言:javascript
复制
 @using HierarchicalControlsDemo.Helpers
@model Project.Models.Gift

<div class="editorRow">
    @using (Html.BeginCollectionItem("gifts"))
    {
        @Html.LabelFor(m =>m.name);
        @Html.TextBoxFor(x => x.name);
        @Html.LabelFor(m=>m.price);
        @Html.TextBoxFor(x => x.price);
    <a href="#" class="deleteRow">delete</a>
    }
</div>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31988600

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档