我在单击时调用一个 javascript 函数,该函数调用一个返回部分 View 或完整 View 的操作方法。我想在模式弹出窗口中加载部分 View ,如果它是完整 View ,那么只想重定向它。
查看
foreach(var productTemplate in Products)
{
<a href="#" class="btn btn-sm btn-primary" onclick="loadModal('@productTemplate.productId,'@productTemplate.customerId')"> Add New Product</a>
}
<div class="modal fade" id="mymodel" role="dialog" tabindex="-1">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title">Shared Products</h4>
<button type="button" class="close" data-dismiss="modal">×</button>
</div>
<div class="modal-body" id="mymodelbody">
</div>
</div>
</div>
<script>
var loadModal = function (productId, customerId) {
$.ajax({
type: 'GET',
url: '/NewProductTemplate/CreateNewProduct',
cache: false,
data: {
productId: productId,
customerId: customerId
},
dataType: 'html',
success: function (data) {;
$("#mymodelbody").html(data);
$("#mymodel").modal("show");
}
});
}
</script>
NewProductTemplateController 代码:
public ActionResult CreateNewProduct(Guid productId, Guid customerId)
{
var sharedProduct = _productTemplateService.GetSharedProducts(productId);
var _finalSharedProducts = (sharedProduct.Any(t => t.productId != productId));
if (_finalSharedProducts)
{
var sharedProdctTemplate = _productTemplateService.GetSharedProduct(productId);
return PartialView("_shared", new SharedModel
{
SharedProduct = sharedProdctTemplate
});
}
else
{
_productTemplateService.CreateNewProduct(productId);
return RedirectToAction("Details", "ProductTemplate");
}
}
问题是,当 Controller 返回完整 View 时,它会加载到我不想要的模式弹出窗口中。我只想检查 success 函数中的数据,并决定是否加载部分 View 的模式或重定向到完整 View 。我不知道该怎么做。
有人可以帮我吗?谢谢!
更新:
我能够让它像这样工作
if (data.indexOf('<!DOCTYPE html>') != 0) {
$("#mymodelbody").html(data);
$("#mymodel").modal("show");
} else {
window.location.href = '/ProductTemplate/Details?productTemplateId=' + productId;
}
还有一个问题: 有什么方法可以在 javascript 中创建 ProductModal 对象并将其传递给 ProductTemplate 的 Details 操作方法吗?
最佳答案
如果您的操作返回整个页面,它将包含 <!DOCTYPE html> 和 标记。您可以检查结果是否以“<!DOCTYPE html>”开头,例如检查它是否是整个页面。
success: function (data) {
if (!data.startsWith('<!DOCTYPE html>')) {
$("#mymodelbody").html(data);
$("#mymodel").modal("show");
} else {
window.location.href = '<redirect url here>';
}
}
关于javascript - 检查成功ajax函数中的数据以重定向到特定 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55975651/