【问题标题】:How can I send a single string value through View Form in my webAPI?如何通过我的 webAPI 中的 View Form 发送单个字符串值?
【发布时间】:2021-07-31 14:12:43
【问题描述】:

如何从 ASP.NET 核心制作的 WebAPI 中通过视图发送单个字符串值。 这是我的 API:

 [HttpPost]
    [Route("studentlogin/{value}")]
    public IActionResult StudentLogin(string value)
    {
    string name = String.Concat(value.Where(s => !Char.IsWhiteSpace(s)));
    name =  name.ToLower();
    var newStudent = new Student();
    newStudent.FullName = name;
    db.Entry(newStudent).State = EntityState.Added;
    db.SaveChanges();
    
    var selectStudent = db.Students.Where(ss => ss.FullName == name).FirstOrDefault();
    var id = selectStudent.Id;
    string idToString = id.ToString();
    string answer = sha384converter(idToString);
    selectStudent.HashId = answer;
    db.Entry(selectStudent).State = EntityState.Modified;
    db.SaveChanges();
    return Ok();
}

我想通过 View Forms 在其中发送参数值,如何在其中发送数据? 提前致谢。

【问题讨论】:

  • 嗨@MuhammadEhsanShaikh,我可以知道回复是否解决了问题,或者这个帖子有什么更新吗?如果答案解决了问题,请接受 - 请参阅What should I do when someone answers my question。如果您对我的回复有任何疑问,请随时告诉我。

标签: forms asp.net-core razor view


【解决方案1】:
 [Route("studentlogin/{value}")]

如果你使用上面的路由,请求的URL应该是这样的:https://localhost:44310/api/apicontrollername/studentlogin/XXX,参数会从URL和路由中传递过来。

通过查看表单发送参数值,我如何发送数据 在里面?

要从已发布的表单字段中发送参数值,您可以修改代码如下:

在API控制器中,远程路由参数并添加FromForm属性。

    [HttpPost]
    [Route("studentlogin")]
    public IActionResult StudentLogin([FromForm]string value)
    {
        string name = "Default value";
        if (!string.IsNullOrEmpty(value))
        { 
           name  = String.Concat(value.Where(s => !Char.IsWhiteSpace(s)));
        } 

        ... // add your code

        return Ok(name);
    }

然后,创建一个包含 value 属性的模型,如下所示:

public class StudentLoginViewModel
{
    public string value { get; set; }
}

在View页面中,以表格形式显示上述模型:

@model WebApplication6.Models.StudentLoginViewModel;
 
<form id="myform">
    <div class="form-group">
        <label asp-for="value" class="control-label"></label>
        <input asp-for="value" class="form-control" />
        <span asp-validation-for="value" class="text-danger"></span>
    </div>
    <div class="form-group">

        <input type="button" id="btnsubmit" value="Submit" class="btn btn-primary" />
    </div>
</form>

并在上述视图页面的末尾添加以下脚本:

@section Scripts{ 
    <script>
        $(function () {
            $("#btnsubmit").click(function () {  
                //use the serialize() method to encode a set of form elements as a string for submission
                var data = $("#myform").serialize();
                //you can also create JavaScript object and send the data.
                //var data = { value: $("#value").val() };

                $.ajax({
                    url: '/api/todo/studentlogin', // change the url to yours.
                    type: "post",
                    contentType: 'application/x-www-form-urlencoded',
                    data: data,
                    success: function (result) {
                        console.log(result);
                    }
                });
            });
    })
    </script>
}

结果如下:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-16
    • 2010-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-21
    • 1970-01-01
    相关资源
    最近更新 更多