从bootstrap模式获取值,保存,刷新页面

时间:2016-08-01 15:59:27

标签: jquery twitter-bootstrap asp.net-mvc-4 razor bootstrap-modal

我在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"));
    }

这个甚至没有被调用,我在这里开始质疑我的整个策略。我是否正确地远程进行此操作?是否有可能实现我的尝试,如果是的话,怎么做?

我对此有点新意,非常感谢任何帮助。

2 个答案:

答案 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借来的,因为我很懒。