c#给html传参数,关于c#:从html表单传递数据>

我对ASP.NET核心是全新的(2周后),我需要再次学习Web开发和ASP.NET的工作,是的,尝试解决所有问题。所以请原谅这个可能毫无意义的问题。

我在将数据从HTML表单传递到模型,然后再传递到控制器时遇到了一些问题,我想不出来。这是我的问题。

以下是基本的HTML:

以下是模型:

namespace project001.Models

{

public class ContactPageModel

{

public string UserName{ get; set; }

}

}

这里是控制器:

编辑以显示更多代码。这是我的获取方法

[HttpGet]

public IActionResult Contact()

{

ViewBag.PageTitle ="This is the Contact page";

return View();

}

[HttpPost("FormProcWithModels")]

public IActionResult Contact(ContactPageModel model)

{

return Content($"The form username entered is {model.UserName}");

}

例如,当我在表单中输入"jim"的名称并提交它时,页面会加载"输入的表单用户名是:",但名称不会传递。

我没有得到错误或任何东西,而且我还不足以弄清楚为什么数据为空。

提前感谢您提供的任何帮助。

编辑:

当我这样做的时候:

[HttpPost("FormProcWithoutModels")]

public IActionResult Contact(string uName)

{

string currentUser = uName;

ViewBag.PageTitle ="This is the Contact page";

//return View();

return Content($"The form username entered is {currentUser}");

}

它在没有模型的情况下工作。我一试模特,就不管用了!

如果这只是一个基本的学习项目,可以考虑将其上传到GitHub,让其他人查看。问题中没有足够的信息来解决这个问题。

它不可能与名为string uName的参数一起使用,因为输入的名称是name="UserName",因此您没有显示相关的代码。

嗨,@stephenmuecke,这是另一条路线。我把它放在这里是为了展示当我这样做数据传递时,它是如何工作的。请注意"FormProcWithOutModels"与"FormProcWithModel"。对不起,如果我把它弄混了

您显示的代码工作正常。如果它对您不起作用,那么它应该归功于您没有显示给我们的其他代码。

我很好奇,当你说你对ASP.NET核心是全新的,并且必须全面学习Web开发时,你以前用过什么?我对ASP.NET核心的学习曲线很感兴趣,使人们能够更容易地使用.NET核心…

我的经验是在php/js中,我的经验是在mean/nodes堆栈中,所以大多数这些东西在asp.net中不一定是压倒性的(到目前为止,lol),但是,对我来说,学习曲线有点陡峭,因为有太多的东西,我没有人真正的帮助我。

谢谢@tonyranieri,这个项目是基本的,所以我不知道还有什么其他代码可以交互。我要把它分成一个新的解决方案,看看会发生什么。

您还可以使用HttpContext.Request参数获取提交的值。

[HttpPost("FormProcWithModels")]

public IActionResult Contact()

{

var UserName = HttpContext.Request.Form["UserName"]

return Content($"The form username entered is {UserName}");

}

使用FormCollection。

[HttpPost("FormProcWithModels")]

public IActionResult Contact(FormCollection Fc)

{

var UserName = Fc["UserName"].ToString();

return Content($"The form username entered is {UserName}");

}

你好@program宝藏。我做了第一个,但没做好事。对于第二个,我需要添加什么"使用"才能使它工作?

using Microsoft.AspNetCore.Http

我想这是因为,你没有get方法。您需要添加get方法来获取用户输入。

所以,基本上你的控制器看起来是:

[HttpGet]

public IActionResult Contact()

{

return View();

}

[HttpPost("FormProcWithModels")]

public IActionResult Contact(ContactPageModel model)

{

return Content($"The form username entered is {model.UserName}");

}

查看页面:

@model ContactPageModel

虽然不起作用,但加上role="form"。

...

...

我有一个"get方法",在我的代码中与您的方法完全相同。

@谢谢你告诉我,我更新了答案,请查查

@索姆多:我已经检查过了,你的代码真的有效。

我更新了我的帖子,包括了我的get方法和添加了role="form"的html。什么也没有。我看不到任何错误,当我在返回内容行上放置一个断点,并将鼠标移到"model"上时,该值为空。另外,为了清楚起见,这是在我的HTML表单Razor页面的顶部:@model project001.models.contactpagemodel and nothing。

@索姆多:不确定这就是为什么它不起作用,它对我起作用……见这里:imgr.es/3si4

哇!哈哈,我明白了…………我不知道该说什么,你的代码看起来和我的完全一样,但在我的断点上,我的代码是"空的"。我在文章的末尾添加了更多的代码,这样它就可以工作,但是当我这样做的时候。它不。可能是我遗漏了一个指令(@using)还是……其他什么?我迷路了,一个笨蛋都不知道还有其他的选择

@索姆多:没有,没有什么需要补充的。我真的不确定,那有什么问题呢!我用的是.NET Core SDK 2.0和vs2017,你用的是哪个版本?其他方法由@programbarriers声明,但不是复杂场景的最佳实践!!

我下载了两周前的版本,所以不管是哪一个,我都会继续寻找。谢谢你的帮助

我发现在ASP.NET核心中,模型绑定并不总是自动的。尝试:

[HttpPost("FormProcWithModels")]

public IActionResult Contact([FromForm] ContactPageModel model)

{

return Content($"The form username entered is {model.UserName}");

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值