2016-11-24 42 views
0

荫Asp.net网络表单开发和正在努力学习.NET MVC 5. 我知道该怎么做,只有静态的HTML标签的局部视图在MVC 5如何在mvc 5发布数据获取部分视图?

但我可以在一个MVC局部视图也有形式与文本框和提交buttion?

如果是,那么我在哪里写回发函数的这部分视图获取其发布的值,在哪个控制器?

+0

我想你应该使用编辑器模板来代替。这可以将您的模型的一部分,并为他们分配值。具有表单值的编辑器将最终放入html中的客户端。表单发布后,所有名称值对都将被发送,并且如果服务器Action上有相应的名称(模型参数),则它们将被绑定。换句话说,您将有权访问该主页控制器的控制器操作中的编辑器模板值。 –

回答

0

是的,您也可以在部分视图中有文本框和提交按钮。例如

例如,假设您有一个产品应用程序,并且您的主页(View)正在显示所有可用的产品。 所以为了显示你需要通过一个模型

@model IList<xyzRetailer.ViewModels.ProductViewModel> 
@{ 
    ViewData["Title"] = "Home Page"; 
} 

的产品,你可以读到这样的价值:如果你想拥有AA局部视图

<div class="col-md-3"> 
     <h2>Product Categories</h2> 
       <ul> 
      @foreach (var item in Model.Select(a=>a.Category).Distinct()) 
      { 
       <li>@item</li> 
      } 
     </ul> 
    </div> 

我们您的问题与不同的视图模型,你可以与元组或您可以创建一个新的对象,只是为了部分视图,而像下面这样调用它:

@Html.Partial("_AddProduct", new yzRetailer.ViewModels.ProductViewModel()) 

,你的部分观点将类似下面:

@model xyzRetailer.ViewModels.ProductViewModel 
     @using (Html.BeginForm("Create", "Home", FormMethod.Post)) 
     { 
    <div class="input-group"> 
@Html.TextBoxFor(model => model.Id, new { @class = "hidden" }) 
@Html.TextBoxFor(model => model.Category, new { @class = "form-control" }) 
</div><input type="submit" value="Save" class="btn btn-primary btn-block" /> 
    } 

而控制器代码应该首页 - >创建您在@ Html.BeginForm提到。

public async Task<IActionResult> Create(ProductViewModel product) 
    { 
     if (!ModelState.IsValid) 
     { 
      return this.BadRequest(ModelState); 
     } 

     if (string.IsNullOrEmpty(product.Id)) 
     { 
      var result = await _catelogueManager.AddAsync(product); 
     } 
     else 
     { 
      var result = await _catelogueManager.UpdateAsync(product.Id, product); 
     } 
     var products = await _catelogueManager.GetAllAsync(); 
     return View("Index", products); 
    } 
相关问题