PassingLargeHTMLStringsfromViewtoController注:我现在是一个前端开发者,身穿.Net开发者。荒谬,我知道,但我最终陷入的混乱不是这个问题的重点。免责声明,这就是正在发生的事情。正如标题所暗示的那样,我需要将一个非常长的HTML字符串(例如在多页文本中)从视图传递到控制器。最近几天我一直在研究实现这一目标的各种方法。TBH,有些事情是有道理的,有些则没有。这是我在视图中的代码片段:varhtml="";//字符串文字html被附加到某些元素...$("#htmlContent").submit();我想在这里指出几件事:ControlReactor:[HttpPost]publicActionResultParseHtml(FormCollectionform){stringhtmlStr=form["content"].ToString();....//中间有一些代码,但第一行似乎导致错误或//未检索到值。....返回新的EmptyResult();我知道我在MVC框架的上下文中工作并且我理解它的概念。但是用我非常有限的知识知道如何实现它是另一回事(尤其是当你从一个早已离开你的项目的人那里继承了一个糟糕的代码库时!)我想这很简单容易做,但我的轮子需要更长的时间才能完成旋转比我想要的。任何指向正确方向的指示都将非常受欢迎。在这个最低限度可重现的答案中,我将向您展示如何让它工作,您可以从这里运行它:Index.cshtml@{ViewBag.Title="title";Layout="~/Views/Shared/_Layout.cshtml";}标题Controller.cs使用System.Web.Mvc;namespaceMvcPlayground.Controllers{publicclassStackController:Controller{////GET:/Stack/publicActionResultIndex(){returnView();}publicActionResultCreate(FormCollectionform){stringhtmlStr=form["content"].ToString();返回视图(“索引”);}}}如果你在returnView("Index");上放置一个断点返回视图(“索引”);,您会看到htmlStr是“oranges”,这是附加文本框的值。没有回答问题的主要部分,因为我不确定所有细节,抱歉。我并不是说你在任何方面都做错了”,因为我不确定周界是否会让它看起来有必要,但你可能会造成一种情况,你会在解析时头疼,什么都不会在后端......因为我不确定需求,所以很多机会都是错误的,所以我道歉。“我在这里使用字符串文字来构造表单,因为这个DOM需要动态附加到其他元素在某个点。”你想在另一个组件中重新呈现相同的元素?这听起来像是你在寻找局部视图。有了这个,你可以在View1中呈现它并在View2中使用相同的数据。如果您尝试动态创建元素,我认为您正在使用某种类型的模式(即我正在处理一个项目,我在其中迭代一个集合然后迭代FormCollectionsAllKeys元素以获取它们(解析出attribute_和你喜欢什么:foreach(varkeyinform.AllKeys){varid=Convert.ToInt32(key.Replace("attribute_",""));//可能想要TryParsevaritem=Item.GetItemById(id);item.Value=form[key];item.Update();}在视图中的某处,您使用javascript设置document.getElementById("contentStr")(不确定这是否是故意的,但您的id和名称是不同。本身不错,但可能会导致糟糕)?再一次,不确定这里使用了什么varhtml=。Razor认为你可以为[form]...[/form]做常规的html。你做了类似The以上就是C#学习教程:PassinglargeHTMLstringsfromtheViewtotheController全部内容,如果对大家有用,需要详细了解C#学习教程,希望大家多多关注—$('#content').val(html);本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如有转载请注明出处:
