2017-01-18 36 views
1

我有正在渲染的div来的局部视图的主形式我怎样才能击中控制器。我加载控件非常好。在主窗体 我有一个控制器,它得到了必须从局部视图形式获取数据,当我点击局部视图按钮 ,它不打控制器(SaveSMRNotesFile)的功能。使用具有不同形式的类型(AJAX并开始形式)局部视图形式

当我点击从局部视图上传按钮,它进入SearchUploadNotes控制器,如果我把破发点,并且这不是一个我想要的。

如何传递数据以使用局部视图控制器?

主要形式

@using (Ajax.BeginForm("SearchUploadNotes", "UploadNotes", new AjaxOptions { HttpMethod = "Post", UpdateTargetId = "dvUploadNotes" }, new { @class = "form-horizontal", role = "form" })) 
{ 

<div id="divControlls"> 
    @{Html.RenderPartial("_UploadNotesControllsGridPartialV", new TTAF.Portal.Parts.Web.Models.UploadNotesFolder.UploadNotesViewModel());} 
</div> 


<button class="btn btn-primary " id="btnSearch" name="submit" type="submit">Search</button> 
} 

管窥

@using (Html.BeginForm("SaveSMRNotesFile", "UploadNotes", FormMethod.Post, new { enctype = "multipart/form-data", @class = "form-horizontal" , @id = "form-id", role = "form" })) 
{ 
<button class="btn btn-primary " id="btnn" name="submit" type="sumbit" onclick="">Upload</button> 
} 

控制器功能

[HttpPost] 
public ActionResult SaveSMRNotesFile(UploadNotesViewModel mymodel) 
{ 
} 
+0

嵌套表格不应该在HTML –

+0

然后我如何通过我的功能控制器或作出与控制器的通讯。 –

+0

看来你想通过AJAX将文件上传到服务器,然后通过主窗体保存备注。我会建议使用FormData并通过AJAX发布文件。从您的部分视图中删除

。让我知道你是否需要该代码 –

回答

1

为你的问题的方法可能是:

主要形式

**@using (Ajax.BeginForm("SearchUploadNotes", "UploadNotes", new AjaxOptions { HttpMethod = "Post", UpdateTargetId = "dvUploadNotes" }, new { @class = "form-horizontal", role = "form" })) 
{ 

@if(ViewBag.Control){ 
    <div id="divControlls"> 
     @{Html.RenderPartial("_UploadNotesControllsGridPartialV", new TTAF.Portal.Parts.Web.Models.UploadNotesFolder.UploadNotesViewModel());} 
    </div> 
    } 

<input class="btn btn-primary " id="btnSearch" value="Search" type="submit" formaction="SearchUploadNotes"> 
} 

管窥

<!-- RENDER YOUR DIFFERENT DATA AFTER YOUR SEARCH --> 

    <input class="btn btn-primary " id="btnn" value="Upload" type="sumbit" formaction="SaveSMRNotesFile"/> 

控制器功能

[HttpPost] 
    public ActionResult SaveSMRNotesFile(UploadNotesViewModel mymodel) 
    { 
// DO YOUR STUFF COMING FROM THE DATA RECOVERED OF YOUR FORM IN A UploadNotesViewModel OBJECT 
    } 
    [HttpPost] 
    public ActionResult SearchUploadNotes(UploadNotesViewModel mymodel) 
    { 
    // DO YOUR STUFF COMING FROM THE DATA RECOVERED OF YOUR FORM IN A UploadNotesViewModel OBJECT. RETURNS YOUR DATA AFTER THE SEARCH AND RETURN A VIEWDATA.CONTROL BOOL FOR RENDERING YOUR PARTIAL. 
    } 

这个想法,据我从你的帖子(对不起,我的英文:))是:

你将渲染只是一个带有搜索提交按钮的表单,如果它被点击,你会渲染你的部分,通过ViewData.Control值,搜索到的数据加上一个新的提交按钮用于上传。

该按钮来调用,在同一个控制器,但另一种方法,formaction属性定义,所谓SaveSMRNotesFile,它会做你的东西。我想上传这个数据的新值。

希望有所帮助。让我知道任何疑问。队友的欢呼声。

+0

什么是@if(ViewBag.Control)是什么?是它的控制器名称? –

+0

不是,您可以从控制器发送数据的小容器,而不是使用模型传递数据。它有三种类型。 ViewData,ViewBag和tempdata。他们用于这种purpouse ...检查谷歌队友...;) –

+0

顺便说一下,你可以奖励我的优点和评价我的答案?干杯队友:) –