基本上我所要做的就是将View帖子发回给它自己的post action方法。我希望action方法更新一个简单的值,然后让视图显示新值。以下是一些代码片段。 post action方法从文本框中接收到的值足够好,但在更新此值后,视图不会显示新值:
查看:
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<div class="user_form" style="width: 600px; margin-top: 50px">
<div class="user_form_header">
Default Distribution List
</div>
<% using (Html.BeginForm())
{ %>
<div>
<%= Html.TextBoxFor( model => model.CurrentPageIndex) %>
<input type="submit" name="submitButton" value="Send" />
</div>
<% } %>
</div>
</asp:Content>
控制器:
public ActionResult Index()
{
DefaultDistributionListViewModel model = new DefaultDistributionListViewModel();
model.CurrentPageIndex = 1;
return View(model);
}
[HttpPost]
public ActionResult Index(DefaultDistributionListViewModel model, string submitButton)
{
// repopulate the model
model.CurrentPageIndex = model.CurrentPageIndex + 1;
return View(model);
}
控制器:
public int CurrentPageIndex { get; set; }
谢谢,
答案 0 :(得分:0)
在你的HttpPost方法中,更新了model.CurrentPageIndex并返回View之后,它会激活你重新分配它的HttpGet方法。
model.CurrentPageIndex = 1;
也许在“获取”请求中传递默认参数。
//我相信c#3设置'默认'值 //如果不是你可以使用的[Default]属性和int吗?页
public ActionResult Index(int page = 1)
{
var model = new DefaultDistributionListViewModel {
CurrentPageIndex = page
};
return View(model);
}
[HttpPost]
public ActionResult Index(DefaultDistributionListViewModel model, string submitButton)
{
// repopulate the model
model.CurrentPageIndex = model.CurrentPageIndex + 1;
return RedirectToAction("Index", new {page = model.CurrentPageIndex} );
}
答案 1 :(得分:0)
听起来输出缓存正在阻碍。我会设置一个缓存配置文件并将其设置为不缓存视图。
我是这样做的。
添加到您的web.config:
<system.web>
<caching>
<outputCacheSettings>
<outputCacheProfiles>
<add name="CacheProfile" duration="60" varyByParam="*" />
<add name="ZeroCacheProfile" duration="0" varyByParam="*" />
</outputCacheProfiles>
</outputCacheSettings>
</caching>
</system.web>
将属性添加到控制器:
[OutputCache(CacheProfile = "ZeroCacheProfile")]
public ActionResult Index(int page = 1)
{
var model = new DefaultDistributionListViewModel {
CurrentPageIndex = page
};
return View(model);
}
这可以解决您的问题。
瑞克