【问题标题】:How to pass a div element as a parameter to an MVC controller?如何将 div 元素作为参数传递给 MVC 控制器?
【发布时间】:2019-12-06 17:21:13
【问题描述】:

如何使用 jQuerys $.post() 函数将 <div>Hello World</div> 传递给像 public JsonResult GetDiv(string element) 这样的 MVC 控制器 我在客户端上尝试过encodeURL(),但我不断收到内部服务器错误(500)...我基本上是在尝试将 HTML 代码保存到 SQL Server。谢谢。

【问题讨论】:

  • 如果你得到 500 ......所以你的路线中的路径不存在......我想你的控制器方法不会被调用
  • @sonic 我在函数上设置了一个断点,它只在我没有传递 html 时被调用,但是当我尝试传递一个参数(div)时,我得到 err 500跨度>

标签: javascript jquery html asp.net-mvc


【解决方案1】:

您很可能需要使用[AllowHtml] 属性来装饰您尝试传递的特定属性,如下所示您尝试使用HTML 的属性:

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

然后简单地将 绑定到您的控制器操作中的该属性:

public JsonResult GetDiv(HtmlContent element) 
{ 
     // Access your element here
     var html = element.Content;

     // Save to the database
}

这将使 .NET 知道此字符串应包含 HTML 内容,否则它可能会将其视为潜在的恶意内容并拒绝(类似于您遇到的 500 错误)。

【讨论】:

  • var html = element.Content;没用,无法识别内容……是使用System.Net.Http下的HtmlContent; ?
  • 否 - 这只是自定义包装类的一个示例。我相信[AllowHtml] 属性需要一个属性来装饰(即它不能通过public JsonResult GetDiv([AllowHtml] string content) { ... } 之类的东西内联)。
【解决方案2】:

在 div 的父元素上,调用 innerHTML,这会将 HTML 作为字符串返回,然后您可以将其发布。

【讨论】:

    【解决方案3】:

    您能否提供更多详细信息? 你的控制器在哪里运行? 您要向其发布数据的控制器是否有任何规范?

    为了获取您的 jQuery div 的 HTML 代码,请使用 .html() 函数 - link

    post 函数的工作原理如下:

    jQuery.post( url [, data ] [, success ] [, dataType ] )
    

    第二个参数必须是字符串或普通对象。因此使用 html()-Function 应该可以工作。

    这是我制作的小提琴(基本上是 jsfiddle.net echo demo + jquery post demo 的复制意大利面):https://jsfiddle.net/vyrdp7uo/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-10-31
      • 1970-01-01
      • 2023-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多