You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MVC表单提交含双引号内容时ActionResult无法获取完整值

解决MVC表单提交时带双引号内容被截断的问题

这个坑我之前踩过好几次,核心原因很明确:未转义的双引号会直接破坏HTML属性的结构。当你把带双引号的description直接赋值给input的val()或者div的html()时,浏览器解析HTML会把第一个双引号当成属性值的结束标记,后面的内容直接被丢弃,表单提交自然只能拿到"Test"这种截断后的内容。

解决方案:对特殊字符做HTML转义处理

你需要在赋值前把description里的特殊字符(双引号、小于号、大于号等)转义成对应的HTML实体,让浏览器能正确识别完整内容,不会出现截断。

方法1:手动实现转义函数

先写一个轻量的转义函数,把关键字符替换成HTML实体:

function escapeHtml(str) {
    return str.replace(/&/g, '&')
              .replace(/</g, '&lt;')
              .replace(/>/g, '&gt;')
              .replace(/"/g, '&quot;')
              .replace(/'/g, '&#039;');
}

然后修改你的原代码,在赋值前调用这个函数:

var escapedDescription = escapeHtml(description);
var descriptionOfProduct = $("#descriptionOfProductContainer").clone(); 
$(descriptionOfProduct).find("input#hdnDescriptionOfProduct").val(escapedDescription); 
descriptionOfProduct.find("div#descriptionInEllipsis").html(escapedDescription); 
return descriptionOfProduct.html();

方法2:利用DOM API自动转义

如果不想手动写转义函数,可以借助DOM元素的textContent属性自动处理——它会自动把特殊字符转义成安全的格式:

var descriptionOfProduct = $("#descriptionOfProductContainer").clone(); 
// 给input赋值时,直接用原生value属性会自动处理转义
var input = descriptionOfProduct.find("input#hdnDescriptionOfProduct")[0];
input.value = description;

// 给div赋值用textContent代替html(),避免HTML解析截断
var div = descriptionOfProduct.find("div#descriptionInEllipsis")[0];
div.textContent = description; 

return descriptionOfProduct.html();

注意:如果你的description里包含需要解析的HTML标签,就不能用textContent,得用第一种手动转义的方式——只转义双引号这类属性相关的特殊字符,保留HTML标签的有效性。

后端接收的补充处理

如果后端拿到的是转义后的实体字符串,你需要在ActionResult里反转义才能得到原始内容。在C#中可以用HttpUtility.HtmlDecode()方法:

using System.Web;

public ActionResult YourAction(string hdnDescriptionOfProduct)
{
    string originalDescription = HttpUtility.HtmlDecode(hdnDescriptionOfProduct);
    // 后续业务逻辑处理
    return View();
}

这样修改后,不管description里有多少双引号或者其他特殊字符,表单提交时都能完整传递到后端了。

内容的提问来源于stack exchange,提问作者dip

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 08:30:56