非常に単純なViewComponentについては、ビューをバイパスし、エンコードされたHTML文字列を返すだけです。ビューコンポーネントから未加工htmlをレンダリング
例:
<ul>
<li>One</li>
<li>Two</li>
<ul>
私の自作の実装は、このようなものです:
public class RawHtmlResult : IViewComponentResult
{
public RawHtmlResult(string EncodedHtml)
{
_encodedHtml = EncodedHtml;
}
public string _encodedHtml { get; set; }
public void Execute(ViewComponentContext context)
{
context.Writer.Write(_encodedHtml);
}
public Task ExecuteAsync(ViewComponentContext context)
{
return context.Writer.WriteAsync(_encodedHtml);
}
}
使用法:
public async Task<IViewComponentResult> InvokeAsync(long id)
{
var someArray = await _someService(id);
var ulHelper = new TagBuilder("ul");
var liHelper = new TagBuilder("li");
foreach (var setName in someArray)
{
liHelper = new TagBuilder("li");
liHelper.InnerHtml.Append(setName);
ulHelper.InnerHtml.Append(liHelper);
}
var writer = new System.IO.StringWriter();
ulHelper.WriteTo(writer, new HtmlEncoder());
return new RawHtmlResult(writer.ToString());
}
これまでのところ私は、適切なIViewComponentResultを発見していません。私はapointが欠けていますか?
見る*はマークアップと混合し、*生のHTMLです。コントローラーはレンダリングに何もしなくてはなりません。それ以外の場合は、MVCを使用しないでください。間違ったパターンです。おそらくあなたは*別の問題を解決しようとしていますか?なぜ、MVCフレームワークの中で、このような生のHTMLを作成したいのですか? –
たぶん彼はCMSを開発していて、彼の記事はHTML形式でデータベースに保存されていますか? ;) – Tseng
あなたは 'HtmlString'を調べることもできます。エンコードされているタグヘルパーのコンテンツに対して少し違った答えを使用しました。 http://stackoverflow.com/a/35672341/455493コントローラー内での使用方法についてはよく分かりません。 – Tseng