@Html.BeginForm Отображение "System.Web.Mvc.Html.MvcForm" на странице
У меня есть вид бритвы, что я добавил кнопку удаления внутри оператора "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] - это настоящая кнопка, не хотелось снимать снимок экрана.
Благодарим вас за помощь.
Ответы
Ответ 1
Рекомендуемым способом создания формы является следующее:
<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()
записывает непосредственно на вывод.
Ответ 2
Пожалуйста, используйте @using вместо использования проблемы. Я использую MVC 4
@using(Html.BeginForm("deleteupdate", "home"))
{
@Html.Hidden("returnUrl", Request.Url.ToString())
<button name="id" value="@update.StatusUpdateId">Delete</button>
}