HTML/AJAX Helpers 在 .Net MVC 中的工作
Working of HTML/AJAX Helpers in .Net MVC
我认为这对其他人来说可能很明显,但我无法理解这些类型的方法重载的工作原理。
我们只传递 操作方法 名称的那些。
这些@Html.Helpers
如何获得预期的控制器?
我的猜测:
- 那个特定的 Helper 从
HttpContext
中提取它
this HtmlHelper htmlHelper
参数保存了所有相关的信息
根据要求。
我正在尝试创建一个自定义帮助程序,用户应该在其中传递操作方法的名称,它神奇地获得其各自的控制器.
当我在 运行 期间检查 this HtmlHelper htmlHelper
中的 route-values
时,他们向我展示了这个 -
- {控制器,主页}
- {动作,索引}
- {id, null}
当我在 运行 期间检查 HttpContext
时,它是 null
。
预期输出应该是-
- {控制器,设备}
- {行动,建议}
- {id, null}
如果有人可以提供默认 @Html.Helpers
幕后工作的示例,那就太好了。
更新
我确实找到了我要找的东西。
这是问题的link及其答案
所有 Html 帮助者都可以访问 Html 帮助者 class。原因是这些助手只是 HtmlHelper class.
的扩展方法
public static class HelperExtensions
{
public static string ControllerName(this HtmlHelper helper)
{
string name = helper.ViewContext.Controller.GetType().Name
return String.Format("<span'>{0}</span>", name);
}
}
}
所以关于当前请求的一切都在那里。
View.cshtml
@Html.ControllerName()
我认为这对其他人来说可能很明显,但我无法理解这些类型的方法重载的工作原理。 我们只传递 操作方法 名称的那些。
这些@Html.Helpers
如何获得预期的控制器?
我的猜测:
- 那个特定的 Helper 从
HttpContext
中提取它
this HtmlHelper htmlHelper
参数保存了所有相关的信息 根据要求。
我正在尝试创建一个自定义帮助程序,用户应该在其中传递操作方法的名称,它神奇地获得其各自的控制器.
当我在 运行 期间检查 this HtmlHelper htmlHelper
中的 route-values
时,他们向我展示了这个 -
- {控制器,主页}
- {动作,索引}
- {id, null}
当我在 运行 期间检查 HttpContext
时,它是 null
。
预期输出应该是-
- {控制器,设备}
- {行动,建议}
- {id, null}
如果有人可以提供默认 @Html.Helpers
幕后工作的示例,那就太好了。
更新 我确实找到了我要找的东西。 这是问题的link及其答案
所有 Html 帮助者都可以访问 Html 帮助者 class。原因是这些助手只是 HtmlHelper class.
的扩展方法 public static class HelperExtensions
{
public static string ControllerName(this HtmlHelper helper)
{
string name = helper.ViewContext.Controller.GetType().Name
return String.Format("<span'>{0}</span>", name);
}
}
}
所以关于当前请求的一切都在那里。
View.cshtml
@Html.ControllerName()