在部分视图中更新数据

时间:2012-08-06 18:58:58

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

我是Asp.Net MVC的新手,我无法弄清楚如何更新部分视图的帖子数据。我对GET没有问题,并在局部视图中显示数据。

我不确定在父页面的post方法中将部分视图数据的后置代码放在哪里?或局部视图的后期方法?

当我运行下面的代码时,我在提交时收到此消息。

“在控制台'Registration.Web.Controllers.AgreementsController'上找不到公共操作方法'ScoreRelease'。”}

它在初始页面加载时找到控制器,但在我调用return View(“Review”)时却找不到;在post方法中。

从“审核”页面调用的Parial View

 @{Html.RenderAction("ScoreRelease", "Agreements");}

评分发布部分视图

@model Registration.Web.Models.ReviewModel.ReleaseScore
@using (Html.BeginForm())
{
    @Html.ValidationSummary(true)


    <div class='group' id='data_release'>
        <h4>
            Data Release
        </h4>
        <p>
            Do you wish to release your scores?
        </p>
        <ul class='input_group'>
            <li>
                @Html.RadioButtonFor(model => model.ReleaseScoreIndicator, true)
                <label>
                    Yes
                </label>
            </li>
            <li>
                @Html.RadioButtonFor(model => model.ReleaseScoreIndicator, false)
                <label>
                    No
                </label>
            </li>
        </ul>
          <input type="submit" value="Save"  />
    </div>


}

审核控制器

    public ActionResult Review()
    {
        return View();
    }

    [HttpPost]
    public ActionResult Review(ReviewModel.ReleaseScore model)
    {
        var agmtsService = new AgreementsService();
        agmtsService.UpdateReleaseScoreIndicator(model.ReleaseScoreIndicator);

        return View("Review");

    }

    [HttpGet]
    public ActionResult ScoreRelease()
    {
        var agmtsService = new AgreementsService();
        bool scoreRelease = agmtsService.GetReleaseScoreIndicator();

        var vm = new ReviewModel.ReleaseScore();
        vm.ReleaseScoreIndicator = scoreRelease;

        return PartialView(vm);
    }

2 个答案:

答案 0 :(得分:1)

使用带参数的Html.BeginForm:

@using (Html.BeginForm("Action", "Controller", FormMethod.Post)) 

答案 1 :(得分:0)

您必须将Post Method放在Partial View中。您可以通过Html.BeginForm()Ajax.BeginForm进行双向操作。如果您在弹出窗口中显示此部分视图,那么最好将其用作Ajax。无论您在视图中执行什么操作,都必须在控制器中使用[httppost]标记创建相同的方法名称。