问题描述
我有2个ASP.NET MVC动作方法,我通过传递并加载一些初始数据来调用第一个方法,然后从UI中获得一些其他详细信息,然后从{调用第二个动作方法(Post
动作方法{1}})。 post方法中缺少我从第一个调用中收到的数据。有人可以帮我在这里做错什么吗?
操作方法:
.cshtml
查看[Route("setprofile")]
public ActionResult SetProfile(string id)
{
ProfileData data = new ProfileData();
//do something
data.name= getData(id);
return this.View(data);
}
[Route("setprofile")]
[HttpPost]
public ActionResult SetProfile(ProfileData data)
{
// Here I'm not missing the data.name field value
}
文件:
.cshtml
注意:我需要将我从第一个操作方法接收到的值显示为标签,而不是文本框。
解决方法
有两件事,名称写为文本,为了发送回服务器,您需要将其放在输入元素中。
如果您不想显示它,@Html.HiddenFor(m => m.name)
将创建隐藏的输入元素。
除此之外,请检查ModelState
是否存在验证错误。
if (!ModelState.IsValid)
return BadRequest(ModelState);
.... your code here
如果您的模型无效,则ProfileData
返回结果
您尚未添加.then
元素,以便在提交表单时将其发送回服务器。如果您不希望看到它,同时又将其张贴回去,请为其添加一个隐藏字段:
var objHttp = require( 'http' )
var objFs = require( 'fs' )
function promiseResolveCallback( arg )
{
console.log("promiseResolveCallback(): ",arg)
}
function promiseRejectionCallback( arg )
{
console.log("promiseRejectionCallback(): ",arg)
}
function writeToFileCallback()
{
objFs.writeFile( 'new.js','content_to_be_written',( argError ) =>
{
if( argError )
throw argError
else
console.log( "writeToFileCallback: Written in new.js!" )
}
)
}
function readFromFileCallback()
{
objFs.readFile( 'new.js',( argError,argData ) =>
{
if( argError )
console.log( "readFromFileCallback: " + argError )
else
console.log( "readFromFileCallback: " + argData )
}
)
}
function closeFileCallback()
{
objFs.close( argFd,( argError ) =>
{
if( argError )
console.log("closeFileCallback: " + argError )
else
console.log( "closeFileCallback: Closed!" );
}
)
}
function fileFunction()
{
console.log("In fileFunction:")
// open file
let objPromise = new Promise( ( resolve,reject ) =>
{
objFs.open( 'new.js','r',argFD ) =>
{
if( argError )
{
reject( new Error("File not found!"),1000);
}
else
{
resolve("File found!",1000);
}
}
)
}
);
objPromise.then( promiseResolveCallback,promiseRejectionCallback )
.then( writeToFileCallback )
.then( readFromFileCallback )
.then( closeFileCallback )
}
fileFunction()
没有这些,您要做的就是将input
呈现到标记中,但是一旦提交表单,就不会将其发送回去。另外,您可以在设置值@Html.HiddenFor(m => m.name)
的同时呈现该值的文本框。这样一来,它就可以显示出来,而不被更改,仍然可以发送回服务器。
name