:
public ActionResult SomeFunc(int id)
{
if (condition)
return Content();//here i would like to send Html.ActionLink("Text", "Action")
else
return Content();
}
リンクはJavaScriptで扱う取得します文字列サーバサイドに部分をレンダリングして返す関数を作成することができます。
別の手順を踏んで、ActionLinkPartial
という一般的なものを作成して、@Html.ActionLink
を埋め込み、アクションリンクの構成設定を持つモデルを受け入れることができます。
のような何か...
protected string RenderPartialViewToString(string viewName, object model)
{
if (string.IsNullOrEmpty(viewName))
viewName = ControllerContext.RouteData.GetRequiredString("action");
ViewData.Model = model;
using (StringWriter sw = new StringWriter())
{
ViewEngineResult viewResult = ViewEngines.Engines.FindPartialView(ControllerContext, viewName);
ViewContext viewContext = new ViewContext(ControllerContext, viewResult.View, ViewData, TempData, sw);
viewResult.View.Render(viewContext, sw);
return sw.GetStringBuilder().ToString();
}
}
などのモデルを使用して...
public class ActionLinkModel
{
public string Text{get;set}
public string Action{get;set;}
}
のようなそれを呼び出す...
var html = this.RenderPartialViewToString("Partials/Html/ActionLinkPartial", model);
部分ビューを作成し、クライアント側からAjaxを介して消費するのが最も簡単ですが、アクションメソッドでヘルパーを使用してそこからHTMLを返すことは可能だと思います。 – derloopkat
サーバロジックは、 – shdr
部分的なビューを生成するためにこのコードを埋め込むか、コントローラに入れてViewBagまたはモデルを渡すかを決定する必要があります – derloopkat