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

如何将HTML表单绑定到MVC控制器方法参数?解决415请求错误

问题分析与解决办法

你遇到的415错误(Unsupported Media Type)核心原因是请求的媒体类型与服务器期望的不匹配,加上AJAX配置、表单元素的几个细节问题,导致控制器方法无法触发。以下是具体修正步骤:

1. 修正表单元素:添加name属性

HTML表单的输入元素必须设置name属性(与模型属性名对应),否则无法正确获取表单值,也会影响模型绑定。修改后的表单:

<form id="form1" method="post">
    <label for="name">Your name</label>
    <input type="text" id="name" name="Name" placeholder="Enter your name here please" />
    <label for="starrating">How would you like to rate us?</label>
    <input type="range" min="1" max="5" placeholder="choose the rate here" id="starrating" name="StarRating" />
    <input type="submit" id="btn1" onclick="return addComment()" />
</form>

2. 修正AJAX请求配置

原AJAX请求存在3个关键问题:未指定POST方法、未设置JSON请求头、未将数据转为JSON字符串。修改后的JS脚本:

function addComment() {
    // 阻止表单默认提交行为,避免页面刷新中断AJAX请求
    event.preventDefault();

    // 构造符合模型结构的数据,注意属性名与C#模型对应(大小写不敏感,但建议保持一致)
    var commentData = {
        Name: document.getElementById('name').value,
        StarRating: parseInt(document.getElementById('starrating').value) // 转为int类型,匹配模型的StarRating属性
    };

    $.ajax({
        url: "https://localhost:44342/addcomment",
        method: "POST", // 明确指定POST方法,匹配控制器的[HttpPost]特性
        contentType: "application/json", // 告诉服务器请求体是JSON格式,对应[FromBody]的要求
        dataType: "json", // 预期服务器返回JSON格式响应
        data: JSON.stringify(commentData), // 将JS对象转为JSON字符串,符合[FromBody]的解析要求
        success: function (result) {
            console.log(result);
        },
        error: function(xhr, status, error) {
            console.log("请求错误: " + xhr.status + " - " + error);
        }
    });

    return false; // 双重保险,阻止表单默认提交
}

3. 关键原理说明

  • [FromBody]特性要求请求体必须是JSON格式,且请求头Content-Type为application/json,否则服务器会返回415错误。
  • 表单的默认提交行为会导致页面刷新,必须通过event.preventDefault()或return false阻止,才能让AJAX请求正常完成。
  • 模型绑定依赖表单元素的name属性,只有设置了name,才能将表单值映射到模型的对应属性。

内容的提问来源于stack exchange,提问作者Konstantin Didenko

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 10:41:18