【问题标题】:Basic partial view render基本局部视图渲染
【发布时间】:2012-01-25 17:08:59
【问题描述】:

在我看来,我有一个想要动态呈现的表单。这个表格被一个更大的表格包裹起来:

<form>
    //......stuff...

    @using (Ajax.BeginForm("FindWorkOrder", new AjaxOptions { 
        UpdateTargetId = "workOrders" }))
    {
        <input type="text" name="workOrder" />
        <input type="submit" value="Find" />
    }

    <div id="workOrders">
        @{ Html.RenderPartial("DisplayWorkOrder"); }
    </div>
</form>

在我的控制器中:

public ActionResult FindWorkOrder() 
{
    // do query, return a model
    return View();
}

我有一个名为 DisplayWorkOrder.cshtml 的局部视图。

几个问题:

  • 如何使用从FindWorkOrder 控制器接收到的数据来渲染这个局部视图?
  • 当我在 ajax 表单中按下提交按钮时,整个表单都会提交。我怎样才能将其限制在该特定区域?

我的预期功能是提交 ajax 表单(不提交整个表单)并使用我查询的数据填充 &lt;div id="workOrders"&gt;

谢谢。

【问题讨论】:

    标签: c# ajax asp.net-mvc-3


    【解决方案1】:

    1

    要渲染局部视图,你可以这样做

    @Html.RenderPartial("DisplayWorkOrder")
    

    如果你想将模型传递给 Partial 视图,你可以这样做

    @Html.RenderPartial("DisplayWorkOrder",Model)
    

    如果你想将模型的一个属性传递给 Partial 视图,你可以这样做

    @Html.RenderPartial("DisplayWorkOrder",Model.MyProperty)
    

    假设您有一个模型绑定到您想要调用局部视图的初始(父)视图。您应该在名为“FindWorkOrder”的操作中返回模型/视图模型。类似这样的

    public ActionResult FindWorkOrder() 
    {
       CustomerViewModel objCustVM=CustomerService.GetCustomerViewModel();  // just to get the customer model.
        return View(objCustVM);
    }
    

    在您的主视图中

    @model MyProject.ViewModel.CustomerViewModel    
    <h2>This will show the content from Partial View</h2>
    @{    @Html.RenderPartial("DisplayWorkOrder",Model)}
    

    2

    为了避免提交整个表单,您可以使用您要发送的数据从您的脚本中执行一个 jquery ajax 调用。我会将(只有一个)表单标签保留在外层,并将提交按钮更改为普通按钮控件。

    $("#submitWorkOrder").click(function(){
    
     //Do validation
    
      var id=233; //get customer id from wherever you have it
      ajaxUrl="Customer/SaveWorkOrder/"+id+"?workOrderId=$("#workOrder").val();
      $.ajax({
              url: ajaxUrl,  
              success: function(data){
                    //do whatever with the result data.
                                     }
             });    
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多