0

あるコントローラー アクションから別のビューの 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のみが機能しますが、アクションコントローラーを呼び出した後、2回目からは機能しません

  1. 初めて ROM で動作するようにデータを一時保存したい
  2. 使用後にデータを消去したくない
4

1 に答える 1

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);
}
于 2013-04-13T17:53:45.423 に答える