【问题标题】:POST rendered text by Razor in ASP.NET MVC to serverRazor 在 ASP.NET MVC 中将呈现的文本发布到服务器
【发布时间】:2019-01-13 14:50:33
【问题描述】:

我有一种情况,我用一些 Razor 制作了一个。这是相当标准的,所以想象一下:

<div>
    <strong>Undertegnede myndige skyldner</strong>:<br /><br />
        @Model.ContractText.DebtorName, @Model.ContractText.DebtorFullAddress
        @foreach (var reminder in Model.DemandStructure.ReminderFees_Lines)
        {
            @reminder.Label @: @reminder.Amount.ToCurrency()<br />
        }
</div>

这是一段很好的文字。

我想做的是发布这个生成的文本,并将其存储在服务器上。

可能的解决方案

现在,我当然可以在服务器上生成这个字符串,但是我会失去 Razor 的漂亮格式。

我可以使用一些模板语言 - 但我不熟悉任何容易解决我在服务器端使用的问题的方法?

也许将其包装在某种输入字段中以便发布到服务器是有意义的?

对于如何将生成的文本字符串 POST 到服务器,有没有人有一个简单而智能的解决方案?

【问题讨论】:

  • 你可以把它放在一个单独的 Razor 文件中并在服务器上渲染它。
  • @SLaks 你有代码 sn-p 的例子吗?或者一个想法要搜索什么?听起来很容易

标签: asp.net asp.net-mvc razor asp.net-mvc-5


【解决方案1】:

您是指将与页面上的用户操作相关的文本发布到服务器吗? 如果不是,当然是在服务器端进行,即使在这种情况下,即使是,您也可以将其包装在一个表单元素中(或者可能将文本的副本包装在一个隐藏元素中),然后提交提交任何表单 - 出于多种原因,您可能不应该这样做;

  1. 用户将能够在将文本发送到服务器之前对其进行编辑,但看起来他们不应该这样做,因为他们可以在存储之前更改 Amount 值
  2. 很难对换行符进行编码(它们是 HTML 中的 br 元素,但它们不能正确发布到字符串中的换行符,因此您必须转换它们,或者改用 textarea)
  3. 它会产生不必要的网络流量。

你应该做的只是将它存储在服务器端代码中,使用格式字符串来创建相同的结果文本;

var theText = $"Undertegnede myndige skyldner:{Envionment.NewLine}{Envionment.NewLine}{Model.ContractText.DebtorName}, {Model.ContractText.DebtorFullAddress}
        {String.Join(Environment.NewLine, Model.DemandStructure.ReminderFees_Lines})";

【讨论】:

  • 你完全正确,用户不应该能够编辑它。你是对的,如果它在一个隐藏字段左右,用户理论上可以在发布之前更改更改。但是文本很长(在上面缩短了)并且把它全部放在一个很长的 string.format 中,很容易出错。我猜 Razor 文件并在服务器上渲染它是前进的方向?
  • @LarsHoldgaard 请注意 - 如果您渲染 Razor 文件,您仍然会面临必须将任何 HTML 元素编码为普通文本的问题 - 即
    不会在普通字符串,仅在由浏览器呈现时。您确定要将整个 TEXT 存储在服务器上吗?而不仅仅是组件变量?将其存储为字符串似乎是多余的......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-08-04
  • 2014-02-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多