MVC4 SPA ウォークスルーの例に従って、10 個のトピックのリストをプルダウンし、ユーザーがそれらを安全または不良としてマークし、変更を保存できるようにする単純なアプリケーションを作成しました。ここで、ユーザーが変更を保存したら、次の 10 件のトピックを処理するリストをリロードしたいと思います。どうすればいいですか?
これが私のビューデータモデルです:
function TopicsViewModel() {
// Data
var self = this;
self.dataSource = upshot.dataSources.UnsafeTopics.refresh();
self.topics = self.dataSource.getEntities();
// Operations
self.saveAll = function () {
self.dataSource.commitChanges();
}
self.revertAll = function () {
self.dataSource.revertChanges();
}
}
意見:
@(Html.UpshotContext(bufferChanges: true).DataSource<TopicDataController>(x => x.GetUnsafeTopics()))
<button id="saveAll" data-bind="click: saveAll">Commit changes</button>
<ul data-bind="foreach: topics">
<li data-bind="css: { updated: IsUpdated }">
<strong class="topicItem" data-bind="text: TopicName"></strong>
<label><input class="bad" type="checkbox" data-bind="checked: IsBad" /> is bad</label>
<label><input class="safe" type="checkbox" data-bind="checked: IsSafe"/> is safe</label>
</li>
</ul>
<script src="~/Scripts/App/TopicsViewModel.js" type="text/javascript"></script>
<script type="text/javascript">
$(function () {
ko.applyBindings(new TopicsViewModel());
});
</script>
コントローラ:
public class TopicDataController : DbDataController<SocialViewEntities>
{
public IQueryable<Topic> GetUnsafeTopics()
{
return DbContext.Topics.Where<Topic>(t => t.IsBad == false).Where<Topic>(t => t.IsSafe == false).Take<Topic>(10);
}
public void UpdateTopic(Topic topic) { UpdateEntity(topic); }
}