我想输出两个不同的视图(一个作为将作为电子邮件发送的字符串),另一个显示给用户的页面.
这是否可以在ASP.NET MVC beta中使用?
我尝试过多个例子:
1. ASP.NET MVC Beta中的RenderPartial到String
如果我使用此示例,则会收到"在HTTP标头发送后无法重定向".
如果我使用它,我似乎无法执行redirectToAction,因为它尝试渲染可能不存在的视图.如果我确实返回了视图,那么它完全搞砸了,看起来根本不正确.
有没有人对我遇到的这些问题有任何想法/解决方案,或者对更好的问题有任何建议?
非常感谢!
以下是一个例子.我要做的是创建GetViewForEmail方法:
public ActionResult OrderResult(string ref)
{
//Get the order
Order order = OrderService.GetOrder(ref);
//The email helper would do the meat and veg by getting the view as a string
//Pass the control name (OrderResultEmail) and the model (order)
string emailView = GetViewForEmail("OrderResultEmail", order);
//Email the order out
EmailHelper(order, emailView);
return View("OrderResult", order);
}
Run Code Online (Sandbox Code Playgroud)
Tim Scott接受的答案(由我改变并格式化):
public virtual string RenderViewToString(
ControllerContext controllerContext,
string viewPath, …Run Code Online (Sandbox Code Playgroud) 我使用ASP.NET MVC和jQuery,并且对我的控制器有很多Ajax请求.
使用部分视图(usercontrols)在加载页面时构建初始视图.然后,如果我需要根据我的Ajax请求追加/替换数据,我会从Json响应中构建HTML.
这种方法让我完全掌控,即.如果出现问题,我可以从控制器获取额外信息,然后根据该信息显示错误消息.
然而,最近我对在部分视图和从Json生成HTML的部分中维护HTML结构所做的所有额外工作感到非常恼火.
我喜欢制作一个jQuery ajax请求,然后让控制器返回PartialView("mypartialview"),然后只使用jQuery替换视图中的HTML.
但是,这样我就无法从控制器中附加额外的数据 - 无论是局部视图给我的是什么 - 或者什么都没有.至少那是我目前的看法.
如果某些验证在我的控制器操作中的某个时刻出错,我不想返回局部视图的HTML.
那么你如何处理这个问题呢?
谢谢阅读.