我正在从MVC 5将项目升级到MVC 6,并且发现 FormCollection 没有使用来自AJAX帖子的数据填充(即返回空值)。 / p>
数据正在正确发送:
控制器中方法的签名是:
public string processform(FormCollection formCollection)
我可以在此方法中设置断点,在提交表单数据时会触发该断点,但 formCollection 对象为空。
鉴于此代码在较低版本的MVC中运行良好,我们是否必须在MVC 6中做一些不同的事情才能实现?
答案 0 :(得分:1)
答案 1 :(得分:1)
Zaki的帖子让我走上了一条小路,我最终得到了这个有效的代码:
[ValidateAntiForgeryToken]
[HttpPost]
[AllowAnonymous]
public async Task<string> processform()
{
var objFormCollection = await HttpContext.Request.ReadFormAsync();
...
}
虽然随着ASP.NET 5 / Core 1.0 MVC 6等的快速变化,但事情可能会再次发生变化。
答案 2 :(得分:0)
我使用HttpContext读取表单数据和附加到表单的任何文件,这些文件正在提交。 例如:
exports.search = function (req, res) {
if (!req.query.q) return res.status(400).send('No Query Provided')
log.error(req.query.q)
User.search({query_string: {query: req.query.q}}, (err, results) => {
if (err) return handleError(res, err)
var ret = _.map(results.hits.hits, result => ({
userID: result._id,
_score: result._score,
name: result._source.name,
loc: result._source.loc,
info: result._source.info,
images: result._source.images
}))
return res.send(ret)
})
}
在上面的示例中,“isFeatured”是我使用jquery添加到formData的键。我希望这对你有所帮助。
答案 3 :(得分:0)
确保您的输入字段具有&#39;名称&#39;属性。