MVC - 通过控制器内容(函数)参数发送 HtmlHelper 对象?

MVC - Send HtmlHelper object by controller Content (function) argument?

有没有办法 return 从控制器查看 HtmlHelper 对象?

在代码中:

控制器:

public ActionResult SomeFunc(int id)
    {
        if (condition)
            return Content();//here i would like to send Html.ActionLink("Text", "Action")
        else
            return Content();
    }

link 将在 javascript 中获得句柄:

        $.get("", { id: $("#id").val() }).
    done(function (data) {
        if (data != 0) {
            $("#someDOMID").val(data);
        }
    });

如果您希望内容包含原始 html 字符串,那么您可以创建一个函数来呈现部分字符串服务器端和 return。

然后您可以更进一步,创建一个通用 ActionLinkPartial,其中包含一个嵌入式 @Html.ActionLink 并接受具有您的操作 link 配置设置的模型。

类似...

   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);

如果您只需要发送问题中提到的 link 那么试试这个:

public ActionResult GetLink()
{
    string url = Url.Action("Index", "Home", new { id = 1 });
    return Content(url);
}

否则,最好使用局部视图方法。