加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – Html.BeginForm()工作正常,Html.BeginForm(“act

发布时间:2020-12-16 07:05:46 所属栏目:asp.Net 来源:网络整理
导读:我在我的网站的管理面板上使用 TinyMCE editor,所以我用[AllowHtml]装饰模型属性(tinymce的目标),并在视图中使用Html.BeginForm().当我提交带有HTML字段的表单时,一切正常. 但是我有一个问题,如果我以相同的方式使用重载Html.BeginForm(“action”,“control
我在我的网站的管理面板上使用 TinyMCE editor,所以我用[AllowHtml]装饰模型属性(tinymce的目标),并在视图中使用Html.BeginForm().当我提交带有HTML字段的表单时,一切正常.

但是我有一个问题,如果我以相同的方式使用重载Html.BeginForm(“action”,“controller”),它会跳过[AllowHtml]并抛出众所周知的Request.form异常.
我被迫在Action-Method上使用[ValidateInput(false)]来使它无异常地工作.
你知道为什么吗?在此先感谢您的澄清,

这是方案/项目:Asp.net Mvc 4:

型号/ Ricetta.cs

..
[Required(ErrorMessage = "Corpo Articolo vuoto")]
[AllowHtml]
public string corpoTesto { get; set; }
..

Controller / RicetteController.cs

..
    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Create(RicettaViewModel modelloRicetta)
    {
        if (ModelState.IsValid) {
..

查看Ricette / Create从RicetteController中的另一个Action方法调用为View(“Create”,modelObject)

@model WebAPP_MVC4.Areas.Admin.Models.RicettaViewModel
 ...
 @using (Html.BeginForm("Create","Ricette",FormMethod.Post)){
 @Html.AntiForgeryToken()
 @Html.ValidationSummary(true)

....

<fieldset>
    <legend>Corpo Ricetta ~</legend>
    <div class="editor-label">
        @Html.LabelFor(p=>p.ricetta.corpoTesto)
    </div>
    <div class="editor-field">
        @Html.TextAreaFor(p=>p.ricetta.corpoTesto,new { @cols = 60,@rows = 20})
        @Html.ValidationMessageFor(p=>p.ricetta.corpoTesto)
    </div>
 </fieldset>
..

解决方法

我做了快速测试,一切正常,Html.BeginForm()和Html.BeginForm(“action”,“controller”)之间的行为没有区别.也许这个问题的原因在于您没有向我们展示的源代码.

在我的代码(工作)下面:
VieModel:

public class PostViewModel
{
    [AllowHtml]
    [Required]
    public string Content { get; set; } 
}

控制器:

public ActionResult Index()
{
    return View("Create",new PostViewModel());
}

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(PostViewModel model)
{
    if (ModelState.IsValid)
    {
        return Index();
    }
    return View(model);
}

视图:

@model SendHTmlTpControler.Models.PostViewModel

<html>
<head>
    <script src="~/Scripts/tinymce/tiny_mce.js"></script>

    <script type="text/javascript">
        tinymce.init({
            selector: "textarea",toolbar: "insertfile undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image"
        });
    </script>
</head>
<body>
    <h2>Create</h2>

    @using (Html.BeginForm("Create","Home",FormMethod.Post))
    {
        @Html.AntiForgeryToken()
        @Html.ValidationSummary(true)

        <div class="editor-label">
            @Html.LabelFor(model => model.Content)
        </div>
        <div class="editor-field">
            @Html.TextAreaFor(model => model.Content,@rows = 20 })
            @Html.ValidationMessageFor(model => model.Content)
        </div>

        <p>
            <input type="submit" value="Save" />
        </p>
    }

</body>
</html>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读