2014-10-11 27 views
0

MVC4,點擊下拉菜單中的javascript函數在視圖的'scripts'部分被調用。函數使ajax調用控制器動作,返回Json數據。我需要傳遞一些返回值給Html.Partial()來渲染。如何做到這一點?對於Html.Partial(),這些值「不存在於當前上下文中」。MVC4如何在JavaScript中將值傳遞給Html.Partial?

VIEW:MyView的

<div>@Html.DropDownList("listId", list, new { onChange=showText() }</div> 
<div id="divMyText" ></div> 

@section scripts{ 

function showText() 
{ 
    var val1 = 1; 

    $.ajax({ 
     type:"POST", 
     url: "/Home/MyAction", 
     data: {parm1:val1}, 
     success: function (result){ 
      renderMyView(result.id); 
     } 
    }); 
} 

function renderMyView(id) 
{ 
    $('#divMyText').html('@Html.Partial("MyView", new MyViewModel (id))'); // id here is Not 'visible' for MyViewModel. 
} 

} 

控制器操作:

public ActionResult MyAction(int parm1) 
{ 
    ....... 
    return Json (myObject); 
} 

public ActionResult MyView (int id) 
{ 
    MyViewModel model = new MyViewModel(id); 
    return View(model); 
} 

如何值id傳遞給MyViewModel在Html.Partial聲明? 謝謝

+0

我恐怕你不能這樣做 – 2014-10-11 16:57:11

回答

1

您需要在控制器端組合它們。我的行爲更改爲

public PartialViewResult MyAction (int id) 
{ 
    MyViewModel model = new MyViewModel(id); 
    return PartialView("PartialName", model); 
}  

然後在你的腳本,而不是調用渲染視圖功能

$('#divMyText').html(result); 

這需要返回的局部視圖與捆綁模型,並把它放到DIV

+0

而不需要動作MyView()? – 2014-10-11 17:53:44

+0

謝謝,它的工作原理 – 2014-10-11 18:07:06