MVC4更新部分视图

时间:2014-06-16 03:49:00

标签: .net asp.net-mvc asp.net-mvc-4 web partial

我正在开发一个简单的MVC应用程序。

我有主视图,局部视图和控制器。

这是我的主要观点

@model partitalViewTest.Models.Qset 
@{

}

<!DOCTYPE html>

<html>
    <head>
        <meta name="viewport" content="width=device-width" />
        <title>Question</title>
    </head>
    <body>



    <div class="transbox" style="height:inherit;"> 
       @Html.Partial("CheckAnswer",Model.partialModel)
    </div> 

    </body>
</html>

这是我的部分视图:

@model IEnumerable<partitalViewTest.Models.Qset>

@{
    Layout = null;   
}

<h2> </h2>
@foreach (var item in Model)
{
    @item.currpos;
}

@* <input type="button" title="Delete" value="@item.qstuinList[item.currpos].AnsC ;" onclick="changeBtn(this); location.href='@Url.Action("CheckAnswer", "RazerQuestion", new { id = 'A' })    '" />*@
<input id="Button1" type="button" value="button" onclick="location.href='@Url.Action("CheckAnswer", "RazerQuestion", new { id = 'A' })    '" />

这是我的控制者:

 public ActionResult CheckAnswer()
 {
     // Some Code
     return PartialView(qustinb.partialModel);
 }

这工作正常,但我的问题是部分视图返回而不包装主视图。

请帮我解决这个问题。

2 个答案:

答案 0 :(得分:1)

点击按钮即可:

location.href='@Url.Action("CheckAnswer", "RazerQuestion", new { id = 'A' })    '"

将浏览器导航到部分页面。

我怀疑你想要发生的事情是部分页面内容被替换为更新的内容,而无需刷新浏览器或导航。

你可以使用JQuery。

首先,给你一个id:

<div id="content" class="transbox" style="height:inherit;"> 
   @Html.Partial("CheckAnswer",Model.partialModel)
</div> 

其次,响应按钮单击(删除错误检查),执行与以下类似的操作:

function doWork(){
    $.get('@Url.Action("CheckAnswer", "RazerQuestion", new { id = 'A' }'), function (data) {
        $('#content').html(data);
    });
}

最后,更改按钮以执行此操作:

<input id="Button1" type="button" value="button" onclick="doWork()" />

现在:

  • 点击按钮...
  • 触发doWork()功能,这将...
  • 请求CheckAnswer操作,然后...
  • 获取请求的内容,并将<div />内容替换为结果

答案 1 :(得分:0)

该按钮仅加载部分视图。您可以使用Ajax.ActionLink来更新页面上的一些空div,部分视图为响应。 这是一个演示。

@Ajax.ActionLink("Link Text", 

                 "CheckAnswer",

                 new { Id='A' },

                 new AjaxOptions
                     {    
                     UpdateTargetId="emptyDiv", 
                     InsertionMode = InsertionMode.Replace,
                     HttpMethod = "GET"

                 })