asp.net mvc使用Java Script渲染部分视图

时间:2014-02-27 09:26:17

标签: javascript ajax asp.net-mvc razor

我想创建一个在表格中显示数据的部分视图。

我将有一个Select元素,可以选择服务。

当用户在组合框中选择服务时,我想调用带有服务ID号的部分视图:

我该怎么做?

这是一个动作方法,它将渲染partialView

//
// GET: /Service/ServiceStatusLogs/1
public ActionResult ServiceStatusLogs(int id)
{
   var db = new EFServiceStatusHistoryRepository();
   IList<ServiceStatusHistory> logs = db.GetAllStatusLogs(id);
   return View("_ServiceStatusLogs", logs);
 }

以下是返回页面的主要操作方法:

//
// GET: /Services/Status
public ActionResult Status()
{
  IList<Service> services;
  using (var db = new EFServiceRepository())
  {
    services = db.GetAll();
  }
   return View(services);
}

2 个答案:

答案 0 :(得分:7)

您可以使用$ .ajax功能来实现,请检查: -

      //Combo box change event
      $("#comboboxName").change(function () {        
            //Get service Id 
            var serviceId = $("#comboboxName").val();

            //Do ajax call  
            $.ajax({
            type: 'GET',
            url: "@Url.Content("/Service/ServiceStatusLogs/")",    
            data : {                          
                        Id:serviceId  //Data need to pass as parameter                       
                   },           
            dataType: 'html', //dataType - html
            success:function(result)
            {
               //Create a Div around the Partial View and fill the result
               $('#partialViewContainerDiv').html(result);                 
            }
         });           
     });

此外,您应该返回部分视图而不是视图

//
// GET: /Service/ServiceStatusLogs/1
public ActionResult ServiceStatusLogs(int id)
{
   var db = new EFServiceStatusHistoryRepository();
   IList<ServiceStatusHistory> logs = db.GetAllStatusLogs(id);
   return PartialView("_ServiceStatusLogs", logs);
 }

答案 1 :(得分:2)

试试这个:

public ActionResult ServiceStatusLogs( int id )
{   
    //Prepare your model
    return PartialView( "UserDetails", model );
}

然后使用javascript(ajax)加载DOM元素的内容:

$('#user_content').load('/Service/ServiceStatusLogs');