我需要在ASP.NET MVC中的模型中生成一些URL.我想调用类似于UrlHelper.Action()的东西,它使用路由生成URL.我不介意填写通常的空白,如主机名,方案等.
有什么方法我可以打电话给那个吗?有没有办法构建UrlHelper?
如何在ASP.NET视图引擎上生成给定局部视图的HTML 是已知的.
但是如果在razor局部视图上使用此功能则它不起作用,因为异常说部分视图不是从"UserControl"派生的.
如何修复渲染以支持剃刀局部视图?
我需要这个,因为我从这个部分视图生成电子邮件...
更新:
失败的代码(@mcl):
public string RenderPartialToString(string controlName, object viewData)
{
ViewPage viewPage = new ViewPage() { ViewContext = new ViewContext() };
viewPage.Url = this.GetUrlHelper();
string fullControlName = "~/Views/Email/" + controlName + ".ascx";
viewPage.ViewData = new ViewDataDictionary(viewData);
viewPage.Controls.Add(viewPage.LoadControl(fullControlName));
StringBuilder sb = new StringBuilder();
using (StringWriter sw = new StringWriter(sb))
{
using (HtmlTextWriter tw = new HtmlTextWriter(sw))
{
viewPage.RenderControl(tw);
}
}
return sb.ToString();
}
Run Code Online (Sandbox Code Playgroud) 好的一天,所有.
我知道这对于MVC而言是一个非常基本的问题,但我不能为我的生活得到@ Html.RenderPartial不给我错误.我正在使用VB.NET和Razor.我在网上找到的大多数例子都是用c#编写的,这对我来说并不难转换,但这个简单的例子让我感到难过.这是在我的索引视图中,由_Layout.vbhtml呈现:
@Section MixPage
@Html.RenderPartial("_MixScreen", ViewData.Model)
End Section
Run Code Online (Sandbox Code Playgroud)
上面的表达式不会产生值.
今天早上我已经看了很长一段时间,我所采用的例子如下:
最终,我要做的是从控制器返回并更新模型到局部视图:
Function UpdateFormulation(model As FormulationModel) As ActionResult
model.GetCalculation()
Return PartialView("_MixScreen", model)
End Function
Run Code Online (Sandbox Code Playgroud)
并且该控制器是从javascript中的表达式调用的:
function UpdateResults() {
jQuery.support.cors = true;
var theUrl = '/Home/UpdateFormulation/';
var formulation = getFormulation();
$.ajax({
type: "POST",
url: theUrl,
contentType: "application/json",
dataType: "json",
data: JSON.stringify(formulation),
success: function (result, textStatus) {
result = jQuery.parseJSON(result.d);
if (result.ErrorMessage == null) {
FillMixScreen(result);
} else {
alert(result.ErrorMessage);
}
},
error: function (xhr, result) {
alert("readyState: " + …Run Code Online (Sandbox Code Playgroud)