我有一个这样的向导:http://jsfiddle.net/rniemeyer/FyuSD/当我点击按钮时,当前步骤的下一个数据被发送到服务器(发送数据的功能,它不在此链接中显示)在服务器中我有一个像这样:
控制器:
[HttpPost]
public ActionResult SocialNetworkChoice(string[] selectedSocialNetwork)
{
if (selectedProduct!= null)
{
// check if the user got a social account linked in for
// all the selected networks and redirect to the link account page
....
if (q.Count() > 0)
{
return RedirectToAction("LinkAccount", "Account",
new LinkAccountModel() { ProviderName = q.First() });
}
else
{....}
}
}
淘汰赛:
<script id="socNetchoiceTmpl" type="text/html">
<ul data-bind="foreach: socialNetworksList, visible:
socialNetworksList().length > 0">
<li>
<input type="checkbox" data-bind="value: $data, checked:
$parent.selectedSocialNetworks" /><span data-bind="text: $data"/>
</li>
</ul>
</script>
function SocialNetChoicesViewModel() {
var self = this;
self.socialNetworksList = ko.observableArray([]);
self.selectedSocialNetworks = ko.observableArray([]);
self.save = function () {
$.ajax("/Home/SocialNetworkChoice", {
data: ko.toJSON({ selectedSocialNetworks: self.selectedSocialNetworks }),
type: "post", contentType: "application/json",
success: function (result) {
if (result.Success) {
//alert(result.Message);
}
else {
alert(result.Message);
}
}
});
};
// Load initial state from server, convert it to Task instances,
// then populate self.tasks
$.getJSON("/Home/SocialNetworkChoice", function (allData) {
var mappedItems = $.map(allData, function (item) { return item });
self.socialNetworksList(mappedItems);
});
};
在第一步中我有两个社交网络的复选框,当用户检查ckeckbox数据时,它发送到ActionNetworkChoice动作。 if(q.Count()&gt; 0)操作视图“LinkAccount”不显示,向导传递到第二步
如果(q.Count()&gt; 0)重定向到LinkAccount(查看)或其他第二步
,如何解决此问题?我很抱歉我的英语不好,
感谢,
答案 0 :(得分:0)
您只是重定向ajax调用,而不是可见页面。
一种解决方案是检测重定向的ajax调用,并以编程方式相应地重定向页面。例如。从javascript设置window.location。