我在mvc razor页面上有一个bootstrap模态窗口。我尝试使用文本框,保存和取消按钮创建模态,如果保存了值,我想在发生这种情况后刷新页面。
我尝试的策略是使用javascript将所需的字段发送到mvc控制器,然后将它们发送到c#函数进行保存,然后刷新页面。 我在google chrome中设置了一个断点,我知道我至少调用了javascript函数,但是从那里出现了一些问题。
在剃刀页面上,我有模态
<div class="col-lg-6">
<div id="AdjustedAmountModal" class="modal fade" role="dialog">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h4 class="modal-title">New Adusted Liability Amount:</h4>
@Html.TextBoxFor(model => model.AdjustedLiabilityAmount)
</div>
<div class="modal-footer" style="text-align:center">
<div>
<button id="saveAdjustedAmount" type="button" class="btn btn-primary view-insp">Save</button>
<button id="Button_closeModal" type="button" class="btn btn-default close-modal" data-dismiss="modal">Cancel</button>
</div>
</div>
</div>
</div>
</div>
</div>
我的javascript函数(至少被调用)如下
$(document).on("click", "#saveAdjustedAmount", function () {
$.ajax({
cache: false,
type: "POST",
dataType: "json",
data: { "pDOT": $("#DOTNumber").val(), "pKYU": $("#KYUNumber").val(), "pKIT": $("#KITNumber").val(), "pCarrierName": $("#CarrierName").val(), "pAmount": $("#LiabilityAmount").val(), "pAdjustedLiabilityAmount": $("#AdjustedLiabilityAmount").val() },
url: ResolveUrl('~/JeopardyAssessmentController/SaveValue'),
success: function (redirectUrl) {
//Simply redirect to refresh the page
window.location.href = redirectUrl;
}
});
});
在Chrome开发者工具中,我看到线下面有一个红色的波浪形
url: ResolveUrl('~/JeopardyAssessmentController/SaveValue'),
未捕获的ReferenceError:未定义ResolveURL
我在控制器功能中的视觉工作室也有一个突破,我试图调用
[HttpPost]
public ActionResult SaveValue(string pDOT, string pKYU, string pKIT, string pCarrierName, decimal pAmount, string pAdjustedLiabilityAmount)
{
OBS_LIB.BLL.JeopardyAssessment.JeopardyAssessment.SaveJeopardyAssessment(pDOT, pKYU, pKIT, pCarrierName, pAmount, User.Identity.Name, pAdjustedLiabilityAmount);
return Json(Url.Action("Create", "JeapordyAssessment"));
}
这个甚至没有被调用,我在这里开始质疑我的整个策略。我是否正确地远程进行此操作?是否有可能实现我的尝试,如果是的话,怎么做?
我对此有点新意,非常感谢任何帮助。
答案 0 :(得分:0)
return Json(Url.Action("Create", "JeapordyAssessment"));
不确定它是否相关但是应该是JeapordyAssessment而不是JeopardyAssessment?
答案 1 :(得分:0)
ResolveUrl是一个.net函数。它不适用于您的JS文件。要解决此问题,您可以将其添加到您的视图中:
<script type="text/javascript">
var baseUrl = "<%= ResolveUrl("~/") %>";
</script>
然后在你的javascript中执行:
function ResolveUrl(url) {
if (url.indexOf("~/") === 0) {
url = baseUrl + url.substring(2);
}
return url;
}
这是最好的方法吗? 否但它应该可以解决您的问题。
代码是从https://weblogs.asp.net/joelvarty/resolveurl-in-javascript借来的,因为我很懒。