gpt4 book ai didi

c# - 将大型 HTML 字符串从 View 传递到 Controller

转载 作者:太空狗 更新时间:2023-10-29 20:39:16 25 4
gpt4 key购买 nike

注意:我现在是一名前端开发人员,头戴 .Net 开发人员的帽子。可笑,我知道,但我是如何陷入这场困惑的并不是这个问题的重点。撇开免责声明,这就是正在发生的事情。

如标题所示,我需要将一个相当长的 HTML 字符串(如在多页文本中)从 View 传递到 Controller 。我花了最近几天研究实现这一目标的各种方法。 TBH,有些事情是有道理的,有些则没有。

这是我在 View 中的代码片段:

var html =
"<form id='htmlContent' action='" + customUrl + "' method='post'>" +
"<input type='hidden' name='content' id='contentStr'>" +
"</form>";

// string literal html gets appended to some element...

$("#htmlContent").submit();

我想在这里指出一些事情:

  • 我在这里使用字符串文字来构造表单,因为这个 DOM 需要在某个时候动态附加到其他元素。
  • 我使用的是否是有效的 HTML 字符串是不可能的。我已经单独测试了它的有效性,一切看起来都很好。
  • 我有意使用 jQuery 的 submit() 方法而不是使用 Ajax 调用。

Controller :

[HttpPost]
public ActionResult ParseHtml(FormCollection form)
{
string htmlStr = form["content"].ToString();
....
// some code in between, but the first line appears to be causing an error or
// the value is not being retrieved.
....
return new EmptyResult();
}

我知道我在 MVC 框架的上下文中工作,并且我有点理解它的概念。但是,以我非常有限的知识知道如何实现它是另一回事(尤其是当你从一个早已离开你的项目的人那里继承了一个糟糕的代码库时!)

我想这很简单,也很容易做到,但我一直在转动我的轮子比我想的要长得多。任何指向正确方向的指示都将不胜感激。

最佳答案

在这个最小的可重现答案中,我将向您展示如何让它工作,您可以从这里运行它:

索引.cshtml

<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function () {
var url = '@Url.Action("Create","Stack")';
var html = $("<form id='htmlContent' action='"+url+"' method='post'><input type='hidden' name='content' id='contentStr' value='oranges'/></form>");
$(body).append(html);

$("#htmlContent").submit();
});
</script>

@{
ViewBag.Title = "title";
Layout = "~/Views/Shared/_Layout.cshtml";
}

<h2>title</h2>

Controller .cs

using System.Web.Mvc;

namespace MvcPlayground.Controllers
{
public class StackController : Controller
{
//
// GET: /Stack/

public ActionResult Index()
{
return View();
}

public ActionResult Create(FormCollection form)
{
string htmlStr = form["content"].ToString();

return View("Index");
}
}
}

如果您在 return View("Index"); 上放置断点,您将看到 htmlStr 为“oranges”,这是附加文本框的值。

关于c# - 将大型 HTML 字符串从 View 传递到 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27535159/

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