张贴在下面
我们无法弄清楚为什么UrlHelper在从WebApi控制器的上下文中使用时返回空字符串.
我们已经完成了必要的调试,但我们无法找到为什么会发生这种情况,RouteData中有路由,但它似乎没有工作.
在大多数情况下,我们使用RenderViewToString函数,该函数加载由调用组成的视图Url.RouteUrl(routeName).
已经尝试过的东西是创建自定义UrlHelper(但无济于事)并使用UrlHelper(MVC/HTTP)进行调试.
属性路由随处使用路由名称.
用法代码示例:
public class WebApiController : BaseApiController
{
[HttpPost]
[ResponseType(typeof(string))]
[Route("cart/get/checkout", Name = "api.cart.get.checkout")]
public IHttpActionResult GetCheckOutShoppingCart([FromBody] string data)
{
return Ok(RenderViewToString("CartController", "_CheckOutCartPartial", new ShoppingCartModel(Auth.IsAuthenticated ? Auth.GetCustomer().DefaultShippingInfo.CountryId : 148)
{
AddInsurance = false,
InsuredShipping = insuredShipping,
CurrentDeliveryMethodId = deliveryMethodId,
CurrentPaymentMethodId = paymentMethodId
}));
}
}
Run Code Online (Sandbox Code Playgroud)
BaseApiController类:
public class BaseApiController : ApiController
{
public static string RenderViewToString(string controllerName, string viewName)
{
return RenderViewToString(controllerName, viewName, new Dictionary<string, object>());
}
public static string RenderViewToString(string …Run Code Online (Sandbox Code Playgroud) DIV#1的内容是图像,DIV#2的内容是输入文本字段.
#1 {
width: 48px;
height: 48px;
}
#2 {
height: 48px;
}
Run Code Online (Sandbox Code Playgroud)
我不想使用浮动,因为#1的图像在缩放页面时打破了布局.我尝试了一个表,但后来我无法设置边距和填充.还试过显示:内联块然后我也不能使用填充/边距.
我在整个页面上使用%sizing,但填充除外,所以它都适用于缩放和不同的分辨率.
我到处搜索,我想要的基本上是MVC6的RenderViewToString,它不使用控制器或动作的上下文。
由于自定义 TagHelper 进入它们自己的类,因此这些上下文将不可用。
目前我有以下代码,我非常想将 html 放在 Razor 视图中,因为这是不可接受的,哈哈。
public class WindowTagHelper : TagHelper
{
public string Title { get; set; }
public async override Task ProcessAsync(TagHelperContext context, TagHelperOutput output)
{
var preContent = await output.GetChildContentAsync();
var id = context.UniqueId;
output.TagName = "div";
output.Attributes["id"] = id;
output.Attributes["class"] = "window";
output.TagMode = TagMode.StartTagAndEndTag;
var windowControls = new StringBuilder();
windowControls.Append("<div class=\"window-controls\">");
windowControls.Append("<ul class=\"window-icon-list\">");
var minimizeIcon = "<li class=\"control-icon\"><a data-window-id=\"{0}\" class=\"control-icon-minimize\" href=\"#\" data-toggle=\"tooltip\" title=\"Minimize Window\"><div class=\"fa fa-minus\"></div></a></li>".InjectWith(id);
var maximizeIcon = "<li class=\"control-icon\"><a data-window-id=\"{0}\" …Run Code Online (Sandbox Code Playgroud)