gpt4 book ai didi

asp.net-mvc - MVC Razor 表单提交不工作

转载 作者:行者123 更新时间:2023-12-01 11:46:50 24 4
gpt4 key购买 nike

我正在尝试使用一个简单的表单来允许授权用户修改我正在构建的 MVC3 Razor 网站上的选定页面上的内容。不过,我无法让编辑表单正确发布。

我的模型如下:

public class WebContent
{
public virtual UInt32 id { get; set; }
public virtual String page { get; set; }
public virtual String section { get; set; }

[UIHint("tinymce_jquery_full"), AllowHtml]
public virtual String content { get; set; }
}

我的 Controller :

    [Authorize]
public ActionResult Edit(String page, String section)
{
WebContent content = _WebContent.GetSection(page,section);
return View(content);
}

[Authorize]
[HttpPost]
public ActionResult Edit(WebContent content)
{
if (ModelState.IsValid)
{
_WebContent.Update(content);
return View("Index");
}
else return View("Index");
}

还有我的观点:

@model SongbirdsStudios.Models.WebContent
@{
ViewBag.Title = "Edit '"+Model.page+"'Page Content";
}

<div>
<h2>Edit</h2>
@using (Html.BeginForm())
{

<fieldset>
<legend>Page Content</legend>
@Html.HiddenFor(m => m.id)
@Html.HiddenFor(m => m.page)
@Html.HiddenFor(m => m.section)
<div class="editor-label">
Content
</div>
<div class="editor-field">
@Html.EditorFor(m => m.content)
</div>
<p>
<input type="submit" value="Update" />
</p>
</fieldset>
}
</div>

View 正确呈现并显示预期的元素。 UIHint("tinymce_jquery_full") 被正确拾取并且 TinyMCE 编辑器出现在页面上。但是,当提交表单时,出现异常。

System.Web.HttpRequestValidationException: A potentially dangerous Request.Form value was detected from the client (content=...)

我读过的所有内容都表明 AllowHTML 属性应该允许发布,但出于某种原因并非如此。

我可以通过将 [ValidateInput(false)] 属性添加到 HttpPost Controller 方法来解决这个问题。如果我这样做,则不会发生此异常,但模型仍然不会传递给 Controller ​​。它只是传递 null 。检查调试器中的 HttpContext 表明它正在传递 4 个单独的值 - 一个用于我模型中的每个属性,而不是将模型类传递回 Controller 。我不知道我需要更改什么才能使其正常工作。

我希望这是我错过的简单的东西,并且有更好的眼睛的人可以看到它是什么。

最佳答案

因此,在进一步调查 ASP MVC 如何将表单字段映射到模型类并检查发送到浏览器的 HTML 之后,我发现这是我的 WebContent 类中属性名称的问题。

public virtual String content { get; set; }

TinyMCE 编辑器使用内容变量来定义与编辑器界面相关的某些特征。这显然导致用户在编辑器中输入生成的 HTML“内容”无法映射回模型属性。

只需更改模型类中属性的名称(当然还修复相应的数据库映射和 View 引用)即可立即解决问题。

public virtual String web_data_content { get; set; }

其他一切都相同,这与 UIHint 和 AllowHTML 属性完美配合。

关于asp.net-mvc - MVC Razor 表单提交不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14595409/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com