我想输出两个不同的视图(一个作为将作为电子邮件发送的字符串),另一个显示给用户的页面.
这是否可以在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) 我只是想知道是否有可能转换
PartialView("_Product", model)
Run Code Online (Sandbox Code Playgroud)
到HTML,所以我们可以用JSON发送回去?
return Json(result, JsonRequestBehavior.AllowGet);
Run Code Online (Sandbox Code Playgroud) 我有一个包含表单和部分视图的MVC 4视图.主视图包含有关产品的信息,而部分视图包含产品的图像.
我想要做的是让部分视图包含它自己的形式,图像将显示在其上.如果我将此表单提交给控制器操作方法,修改它所基于的模型,然后让操作方法刷新局部视图,我的主视图的局部视图部分是否会更改而不是主视图本身?如果没有,是否有更好的方法来做我想做的事情.我只想更新主视图的局部视图部分.
免责声明:我编辑了这个问题,因为我改变了这个过程,但它没有改变任何问题......
我试图得到一个PartialViewResult字符串渲染,我试图使用RenderRazorViewToString这个问题的方法渲染视图作为字符串 ...,我从这个qustion mvc返回局部视图的提示作为json
我的问题是,字符串看起来像这样:
<$A$><h1>SomeHeader</h1>
<table</$A$><$B$> class="table table-striped"</$B$><$C$>> <tbody</$C$><$D$> data-bind="template: { name: 'eventTemplate', foreach: events }"</$D$><$E$>></tbody>
</table></$E$>
Run Code Online (Sandbox Code Playgroud)
而不是这个
<h1>SomeHeader</h1>
<table class="table table-striped">
<tbody data-bind="template: { name: 'eventTemplate', foreach: events }"></tbody>
</table>
Run Code Online (Sandbox Code Playgroud)
更新:
流程如下所示:
public ActionResult Index(string item, long id)
{
var cont = SomePartialView(item, id);
return View(model: RenderRazorViewToString(cont));
}
Run Code Online (Sandbox Code Playgroud)
现在View只是渲染字符串,如下所示:
@Model
Run Code Online (Sandbox Code Playgroud)
在RenderRazorViewToString(PartialViewResult)返回这个"跛脚"串...
我将如何获得:
<code class="language-markup">@Html.Partial("components")</code>
Run Code Online (Sandbox Code Playgroud)
要输出HTML标记的编码版本?我尝试了httpUtility,但抛出了一些错误。
我有一个部分视图,可以更改连接字符串.提交Edit动作时会被调用.从这里我想要返回并重新打开局部视图,如果我希望用户有第二次去.如果一切顺利(或崩溃),我想调用我的JavaScript函数Logout,将用户注销并重定向到某个起始页.
两种解决方案都有效,但不是一起 我显然错过了一些最佳实践,我该怎么办?
部分视图:EditSetting
@model WebConsole.ViewModels.Setting.SettingViewModel
@using (Ajax.BeginForm("Edit", "Setting", new AjaxOptions { UpdateTargetId = "div" }, new { id = "editform" }))
{
<fieldset>
@Html.AntiForgeryToken()
<div class="form-horizontal">
@Html.ValidationSummary(true, "", new {@class = "text-danger"})
<div class="form-group">
@Html.LabelFor(model => model.User, htmlAttributes: new {@class = "control-label col-md-2"})
<div class="col-md-10">
@Html.EditorFor(model => model.User, new {htmlAttributes = new {@class = "form-control"}})
@Html.ValidationMessageFor(model => model.User, "", new {@class = "text-danger"})
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.Password, htmlAttributes: new {@class = "control-label …Run Code Online (Sandbox Code Playgroud) javascript asp.net-mvc asp.net-mvc-partialview asp.net-mvc-5