注入一些东西到ASP MVC结果
Inject something to ASP MVC Result
在我的项目中,我需要添加功能,显示信息框在页面的右上角,当客户端保存的东西。在我的解决方案中,当保存操作重定向到另一个页面时,一切工作正常。
客户端运行保存操作:
[SaveAction] //my own action filter to show info box
public ActionResult Details(int id, FormCollection form)
{
var pojazd = PojazdRepo.GetById(id);;
if (UpdateAndSave(pojazd, form))
{
return RedirectToAction("Index");
}
else
{
return View(GetDetailsViewModel(id, true));
}
}
现在我的动作过滤器测试ModelState.IsValid
为真,然后添加一些东西到TempData:
public class SaveActionAttribute : ActionFilterAttribute
{
private bool test;
private bool isAjax;
public override void OnActionExecuted(ActionExecutedContext ctx)
{
test = ctx.Controller.ViewData.ModelState.IsValid;
isAjax = ctx.HttpContext.Request.IsAjaxRequest();
base.OnActionExecuted(ctx);
}
public override void OnResultExecuting(ResultExecutingContext ctx)
{
if (test)
{
if (isAjax) ctx.Controller.TempData["ActionPopUp"] = "";
else ctx.Controller.TempData["ActionPopUp"] = "save";
}
base.OnResultExecuting(ctx);
}
}
和我的网站。主运行脚本如果TempData["ActionPopUp"] = "save"
:
<script type="text/javascript">
$(document).ready(function () {
var test = '<%: TempData["ActionPopUp"] %>';
if (test != '') SaveSuccessPopUp(test);
});
</script>
如前所述,此解决方案工作良好,当控制器重定向和站点。主再次加载,我的问题是,如何注入SaveSuccessPopUp()函数的动作结果,当动作被AJAX调用并返回一些东西,什么不重载页面,不运行站点。主控$(document).ready
代码块
问得好。
您可能需要使用局部视图。我的意思是,如果您的请求是ajax请求,再次追加TempData
, TempData
将在部分视图中输出。
如何将部分视图输出作为html块发送?
我有一篇关于如何将部分视图作为字符串发送的博客文章。主题不同,但你会明白的:
http://www.tugberkugurlu.com/archive/working-with-jquery-ajax-api-on-asp-net-mvc-3-0-power-of-json-jquery-and-asp-net-mvc-partial-views下面是一个例子:
[HttpPost]
public ActionResult toogleIsDone(int itemId) {
//Getting the item according to itemId param
var model = _entities.ToDoTBs.FirstOrDefault(x => x.ToDoItemID == itemId);
//toggling the IsDone property
model.IsDone = !model.IsDone;
//Making the change on the db and saving
ObjectStateEntry osmEntry = _entities.ObjectStateManager.GetObjectStateEntry(model);
osmEntry.ChangeState(EntityState.Modified);
_entities.SaveChanges();
var updatedModel = _entities.ToDoTBs;
//returning the new template as json result
return Json(new { data = this.RenderPartialViewToString("_ToDoDBListPartial", updatedModel) });
}
RenderPartialViewToString
是一个控制器扩展。您可以从下面的链接找到完整的代码:
在您将html返回到客户端代码之后,将其附加到DOM并对其进行处理。动画,显示/隐藏,做任何你想做的
相关文章:
- ASP MVC网站与vegas背景幻灯片不显示背景后发布到服务器
- Asp-mvc剃刀将输入文件的值存储在文本框中
- ASP MVC复选框表单提交问题
- ASP MVC 将 Array 对象发送到 JavaScript 函数
- 基于使用的ASP MVC EditorFor/Partial模板添加JavaScript引用
- 可以't在asp-mvc中验证TinyMCE
- ASP MVC集合编辑
- 从ASP MVC异步加载Angularjs(AJAX)并执行它们
- 如何将 ASP MVC 窗体下拉列表设置为空白,但仅当基础值未初始化时
- ASP MVC 5 自动完成不起作用
- JQuery UI 自动完成 ASP MVC Razor 上的多个文本框
- ASP MVC:选中复选框值并选中复选框时获取隐藏的输入总和
- asp.mvc 在返回 PartView 后调用 JavaScript
- ASP MVC 显示在使用 AJAX 时不更新
- ASP MVC 4,将数据从javascript(View)传递到C#静态方法
- ASP MVC 4客户端验证在IE中不起作用(在Chrome中起作用)
- ASP MVC jQuery验证专注于工作,但不专注于表单提交
- 在ASP MVC页面之间传递变量而不将其发送到服务器
- X-editable with ASP MVC View,如何将提交的表单POST操作获取到控制器
- ASP MVC将两个控件绑定到一个字段