ajax返回一个view,MVC4 Jquery Ajax发回部分视图,并从控制器获取ViewBag数据

我有一个剃须刀页(index.cshtml)与两个partialViews(parPage1和parPage2) 我也有这些partialviews的每个按钮。MVC4 Jquery Ajax发回部分视图,并从控制器获取ViewBag数据

当我点击partialView上的button1时,应该做一个ajax回发,并打出相应的操作结果,并从控制器的ViewBag.Message1消息中加载partialview。

所以,当我点击我的partialView1上的button1时,它应该回发并重新载入一条消息,说“Button1在partialView1点击”。

问题

当我点击按钮,它是做一个ajax回发到控制器,但它不是从采摘的ViewBag消息显示。为什么它不是从采摘的数据重新加载PartialView页viewbag。当我调试时,我可以看到ViewBag在剃刀页面重新加载之前获取实际消息。但它没有显示在视图上。请帮我解决这个问题。

在发布到控制器之后,我实际上需要检查发布的数据是否已经存在于数据库中,并且如果数据已经存在,我想发送一条消息回到partialView。

下面是我ParPage1.cshtml

@using (Ajax.BeginForm("ParPage1", "Home", new { id = 1 }, new AjaxOptions { UpdateTargetId = "Page1Form" }, new { encType = "multipart/form-data" }))

{

This is partial view page1

@ViewBag.Message1

}

$(document).ready(function() {

$("#btnButton1").click(function (e) {

var data = { "Data1":"BCXDEFX", "Data2": "BCDEF" };

$.ajax({

type: "POST",

url: "/Home/Button1Clicked",

contentType: "application/json; charset=utf-8",

data: JSON.stringify(data),

dataType: "json",

success: saveItemCompleted(data),

error: saveItemFailed()

});

});

function saveItemCompleted(data) {

}

function saveItemFailed(request, status, error) {

}

});

下面是我ParPage2

@using (Ajax.BeginForm("ParPage2", "Home", new { id = 1 }, new AjaxOptions { UpdateTargetId = "Page2Form" }, new { encType = "multipart/form-data" }))

{

This is partial view page2

@ViewBag.Message2

}

$(document).ready(function() {

$("#btnButton2").click(function (e) {

var data = { "Data1": "BCXDEFX", "Data2": "BCDEF" };

$.ajax({

type: "POST",

url: "/Home/Button2Clicked",

contentType: "application/json; charset=utf-8",

data: JSON.stringify(data),

dataType: "json",

success: saveItemCompleted(data),

error: saveItemFailed()

});

});

function saveItemCompleted(data) {

}

function saveItemFailed(request, status, error) {

}

});

这里是我的控制器代码

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.Mvc;

namespace MvcApplication4.Controllers

{

public class HomeController : Controller

{

public ActionResult Index()

{

return View();

}

public ViewResult ParPage1()

{

return View();

}

public ViewResult ParPage2()

{

return View();

}

public ActionResult Button1Clicked()

{

ViewBag.Message1 = "Button1Clicked";

return PartialView("ParPage1");

}

public ActionResult Button2Clicked(myData data)

{

//Validate for duplicate data

if(duplicate)

{

ViewBag.Message2 = "This data already exists in table. Please review";

}

else

{SaveRecord();}

return PartialView("ParPage2");

}

}

}

2013-08-31

Steve

+0

那么问题是什么?你问什么代码放入'saveItemCompleted'和'saveItemFailed'处理程序?你只想在弹出窗口显示消息或者是否想要重新渲染局部视图? –

+0

当我点击按钮时,它正在对控制器做一个ajax回发,但是它没有从ViewBag中选择消息来显示在重新加载的PartialView页面上。为什么它不从viewbag中选择数据。当我调试时,我可以看到ViewBag在剃刀页面重新加载之前获取实际消息。但它未显示在部分视图上。请帮我解决这个问题。 –

+1

通常,当我们通过ajax调用一个控制器并取回一个'PartialView'时,我们把结果放在窗体上,比如'$('#myTargetDiv')。html(data);'你是否使用过javascript调试器来查看您的ajax调用的结果('data')? –

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值