gpt4 book ai didi

c# - 在创建像 BeginForm 这样的 HTML 扩展时,我可以将内容作为字符串抓取吗?

转载 作者:太空宇宙 更新时间:2023-11-03 14:44:13 25 4
gpt4 key购买 nike

我正在尝试找到一种方法来捕获提供给“使用” block 中的 Html 扩展的内部内容(类似于 Html.BeginForm)。我读过有关使用 IDisposable 类来呈现结束 block 的信息 - 这是我目前所拥有的:

public static class HtmlExtensions
{
private class RZScript : IDisposable
{
private HtmlHelper _helper;
private string _outputContent;

public RZScript(HtmlHelper helper)
{
_helper = helper;
_outputContent = new HtmlTextWriter(_helper.ViewContext.Writer).InnerWriter.ToString();
}

public void Dispose()
{
_helper.ViewContext.Writer.Write("(AAAA)" + _outputContent + "(CCCC)");
}
}

public static IDisposable TestThis(this HtmlHelper htmlHelper)
{
return new RZScript(htmlHelper);
}
}

然后我用以下代码测试这个标签:

<p>test</p>
@using (Html.TestThis())
{
@:(BBBB)
}

我希望得到的结果是:

test (AAAA)(BBBB)(CCCC)

我实际得到的是:

test (BBBB) (AAAA) test (CCCC)

知道如何(或者如果!)我可以将内容放入字符串中吗?谢谢。

最佳答案

有一些工作。不是我想要的语法,但结果是一样的。

public static IHtmlString RegisterScriptInline(this HtmlHelper htmlHelper,
Func<object, IHtmlString> content)
{
string renderedContent = content.Invoke(null).ToString(); // Got it!!!
return null;
}

然后这将通过类似的方式调用(扩展示例以显示 Razor 中的服务器端条件进行评估):

@Html.RegisterScriptInline(@<text>
<script type="text/javascript">
@if (someCondition)
{
@:var item = 'Value1';
}
else
{
@:var item = 'Value2';
}
</script>
</text>)

这里没有开始/结束内容 - 但是,我问题中的所有 AAAA 和 CCCC 等都作为分隔符存在,只是为了表明我正在尝试提取 BBBB(!)我不会将其标记为答案时刻,因为它给了我想要的结果,但没有具体回答问题。

(如果您想知道,请重现@section 类功能...)

关于c# - 在创建像 BeginForm 这样的 HTML 扩展时,我可以将内容作为字符串抓取吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55238027/

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