@ Html.BeginForm在页面上显示“ System.Web.Mvc.Html.MvcForm”


97

我有一个剃刀视图,我在'if'语句的内部添加了删除按钮,并且在浏览器中呈现视图时,在删除按钮旁边显示“ System.Web.Mvc.Html.MvcForm”

我如何摆脱它?

这是代码:

<div id="deletestatusupdate">
    @if (update.User.UserName.Equals(User.Identity.Name, StringComparison.OrdinalIgnoreCase))
    {
        @Html.BeginForm("deleteupdate", "home")
        @Html.Hidden("returnUrl", Request.Url.ToString())
        <button name="id" value="@update.StatusUpdateId">Delete</button>
    }
</div>

这是它在渲染的Razor视图中的显示方式:

System.Web.Mvc.Html.MvcForm [删除按钮]

假装[delete button]是一个实际的按钮,感觉不像是截屏。

谢谢您的帮助。

Answers:


147

推荐的生成表单的方法如下:

<div id="deletestatusupdate">
    @if (update.User.UserName.Equals(User.Identity.Name, StringComparison.OrdinalIgnoreCase))
    {
        using(Html.BeginForm("deleteupdate", "home"))
        {
            @Html.Hidden("returnUrl", Request.Url.ToString())
            <button name="id" value="@update.StatusUpdateId">Delete</button>
        }
    }
</div>

或者,您可以这样做:

<div id="deletestatusupdate">
    @if (update.User.UserName.Equals(User.Identity.Name, StringComparison.OrdinalIgnoreCase))
    {
        Html.BeginForm("deleteupdate", "home");
        @Html.Hidden("returnUrl", Request.Url.ToString())
        <button name="id" value="@update.StatusUpdateId">Delete</button>
        Html.EndForm();
    }
</div>

您原始方法无效的原因是因为BeginForm()直接写入输出。


3
使用@using(Html.BeginForm("deleteupdate", "home"))工作对我来说
高塔姆脚气

27

请使用@using而不是使用问题将解决,我正在使用MVC 4

@using(Html.BeginForm("deleteupdate", "home"))
{
    @Html.Hidden("returnUrl", Request.Url.ToString())
    <button name="id" value="@update.StatusUpdateId">Delete</button>
}

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.