You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Ajax与ASP.NET MVC的计算器:如何将结果显示在禁用输入框

解决ASP.NET MVC Ajax计算器结果显示在禁用输入框的问题

你当前的核心问题是:Ajax.BeginForm配置的UpdateTargetId是用来替换指定DOM元素的HTML内容,但控制器返回的是JSON数据而非HTML片段,所以无法直接将结果同步到禁用的输入框中。以下是具体修改方案:

步骤1:修改视图代码

给禁用的输入框添加唯一ID,同时调整AjaxOptions配置,移除UpdateTargetId并新增OnSuccess回调函数来处理返回的JSON数据:

@model Calculator.Models.Calculator_Model

@{ 
    ViewBag.Title = "Index";
}

@using (Ajax.BeginForm("Index", "Calculator",
    new AjaxOptions()
    {
        HttpMethod = "POST",
        OnSuccess = "handleCalculationResult" // 新增结果处理回调
    }
))
{
    <input type="number" name="Number1" value="@Model.Number1" />

    <input type="number" name="Number2" value="@Model.Number2" />

    <div>
        <!-- 给禁用输入框添加唯一ID,方便JS定位 -->
        <input type="number" id="totalInput" name="Total" value="@Model.Total" disabled />
        <!-- 原接收结果的div可保留或删除,已不再依赖它 -->
        <div id="Total"></div>
    </div>

    <button type="submit" name="calculate" value="add">+</button>
    <button type="submit" name="calculate" value="sub">-</button>
    <button type="submit" name="calculate" value="multi">*</button>
    <button type="submit" name="calculate" value="divis">/</button>
}

<script>
function handleCalculationResult(cal) {
    // 将返回的计算结果赋值给禁用输入框
    document.getElementById('totalInput').value = cal.Total;
    // 若使用jQuery可简写为:$("#totalInput").val(cal.Total);
}
</script>

步骤2:确保依赖脚本引用

Ajax.BeginForm需要依赖jquery.unobtrusive-ajax.js,请确认你的页面(如_Layout.cshtml)已引入该脚本:

<script src="~/Scripts/jquery.unobtrusive-ajax.min.js"></script>

控制器与模型代码无需修改

你的控制器返回JSON的逻辑、模型定义均无问题,保持原代码即可。

修改完成后,点击运算按钮时,Ajax请求会将计算结果以JSON形式返回,通过handleCalculationResult函数直接把结果赋值给禁用的输入框,即可实现你想要的效果。

内容的提问来源于stack exchange,提问作者Mr King

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 13:01:42