我需要将一个变量从一个控制器动作传递到另一个视图中的javascript ..
在控制器操作A中:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create(FormCollection args)
{
var obj = new ProjectManagernew();
var res = new ProjectViewModelNew();
try
{
UpdateModel(res);
if (obj.AddUpdateOrderField(res))
{
ViewBag.RecordAdded = true;
ViewBag.Message = "Project Added Successfully";
TempData["Name"] = "Monjurul Habib";
}
return View(res);
}
catch (Exception)
{
//ModelState.AddRuleViolations(res.GetRuleViolations());
return View(res);
}
}
在另一个javascript:
function gridA() {
var message = '@TempData["Name"]';
$('#mylabel').text(message);
}
只有Tempdata有效但不是第一次在iam调用动作控制器后第二次工作
答案 0 :(得分:1)
如果您的javascript位于采用ProjectViewModelNew的同一视图中,则可以为视图使用不同的类型,例如,您可以使用合成:
public class MyCompositeClass
{
ProjectViewModelNew ProjectViewModel{get;set;};
string Name{get;set;}
}
然后你的行动方法是:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create(FormCollection args)
{
var obj = new ProjectManagernew();
var res = new ProjectViewModelNew();
var myView = new MyCompositeClass();
try
{
UpdateModel(res);
myView.ProjecViewModel = res;
if (obj.AddUpdateOrderField(res))
{
ViewBag.RecordAdded = true;
ViewBag.Message = "Project Added Successfully";
myView.Name= "Monjurul Habib";
}
return View(myView);
}
catch (Exception)
{
//ModelState.AddRuleViolations(res.GetRuleViolations());
return View(myView);
}
}
你的js将是:
function gridA() {
var message = '@Model.Name';
$('#mylabel').text(message);
}