C# MVC将表单数据发布到主控制器中的异步任务
我是线程新手,我有一个异步任务,需要将视图数据发布到此任务 这就是我所处的位置,我的时间不多了:C# MVC将表单数据发布到主控制器中的异步任务,c#,asp.net-mvc,asynchronous,C#,Asp.net Mvc,Asynchronous,我是线程新手,我有一个异步任务,需要将视图数据发布到此任务 这就是我所处的位置,我的时间不多了: [HttpPost] [ValidateAntiForgeryToken] public ActionResult Pay(string amount, string cardExpirtyDate, string cardHolderName, string cardNumber) public async Task<ActionResult> PayAsync(FormCo
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Pay(string amount, string cardExpirtyDate, string cardHolderName, string cardNumber)
public async Task<ActionResult> PayAsync(FormCollection form)
{
var amount = form["amount"].ToString();
var cardExpirtyDate = form["cardExpirtyDate"].ToString();
var cardHolderName = form["cardHolderName"].ToString();
var cardNumber = "4111111111111111";
var customerId = 23;//Internal purpose to track which customer made the transaction....
var paymentService = new PaymentService(amount, cardExpirtyDate, cardHolderName, cardNumber, customerId.ToString());
var transactionResult = await paymentService.PostAsync();
if (transactionResult == null) return View();
if (transactionResult.TransactionApproved && !transactionResult.TransactionError
&& transactionResult.CustomerRef == customerId.ToString())
{
//transaction success....Go to payment Response and send the variables
TempData["TRANSACTION_STATUS"] = "APPROVED";
}
else
{
var message = transactionResult.Message;
}
return View();
}
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Pay(字符串金额、字符串cardExpirtyDate、字符串持卡人姓名、字符串cardNumber)
公共异步任务PaySync(FormCollection表单)
{
var amount=形式[“amount”].ToString();
var cardExpirtyDate=form[“cardExpirtyDate”].ToString();
var CANDERNAME=表格[“CANDERNAME”]。ToString();
var cardname=“4111111111”;
var customerId=23;//用于跟踪进行交易的客户的内部用途。。。。
var paymentService=新的paymentService(金额、cardExpirtyDate、持卡人姓名、卡号、customerId.ToString());
var transactionResult=wait paymentService.PostAsync();
if(transactionResult==null)返回视图();
if(transactionResult.TransactionApproved&!transactionResult.TransactionError)
&&transactionResult.CustomerRef==customerId.ToString()
{
//交易成功…转到付款响应并发送变量
TempData[“交易状态”]=“已批准”;
}
其他的
{
var message=transactionResult.message;
}
返回视图();
}
它期待着一个;。我尝试在异步任务周围添加{},但也不起作用
观点:
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
<div>
Amount: <input type="text" name="amount" /><br />
Expirty: <input type="text" name="cardExpirtyDate" /><br />
Name: <input type="text" name="cardHolderName" /><br />
Number: <input type="text" name="cardNumber" /><br />
</div>
<input type="submit" />
}
@if (TempData["TRANSACTION_STATUS"] != null && TempData["TRANSACTION_STATUS"] == "APPROVED")
{
<div class="alert alert-success">Your transaction has been processed successfully. Thank you.</div>
}
else
{
{
<div class="alert alert-danger">There is an issue with this transaction. Please try a different card.</div>
}
}
@使用(Html.BeginForm())
{
@Html.AntiForgeryToken()
金额:
到期日:
名称:
编号:
}
@if(TempData[“事务处理状态”]!=null&&TempData[“事务处理状态”]=“已批准”)
{
您的交易已成功处理。谢谢。
}
其他的
{
{
此交易存在问题。请尝试其他卡。
}
}
谢谢您的关注,
Doug您有一个没有方法主体的方法头:
public ActionResult Pay(string amount, string cardExpirtyDate, string cardHolderName, string cardNumber)
为方法定义主体,或删除标题
在这种情况下,编译器错误可能并不明显,因为类中存在一个非常明显的结构错误。在这种情况下,编译器根本无法理解它。在我看来,您试图在一个方法中创建一个方法
public ActionResult Pay(string amount, string cardExpirtyDate, string cardHolderName, string cardNumber) {
public async Task<ActionResult> PayAsync(FormCollection form) {
//... Your code ...
}
}
public ActionResult Pay(字符串金额、字符串cardExpirtyDate、字符串持卡人姓名、字符串cardNumber){
公共异步任务PaySync(FormCollection表单){
//…你的代码。。。
}
}
你想在这里完成什么
您应该只有一种方法:
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<ActionResult> PayAsync(FormCollection form) {
// ... Your code...
}
[HttpPost]
[ValidateAntiForgeryToken]
公共异步任务PaySync(FormCollection表单){
//…你的代码。。。
}
这可能就是您试图实现的目标。只需使主请求异步,而不是让它尝试调用另一个请求
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Pay(FormCollection form)
var amount = form["amount"].ToString();
var cardExpirtyDate = form["cardExpirtyDate"].ToString();
var cardHolderName = form["cardHolderName"].ToString();
var cardNumber = "4111111111111111";
var customerId = 23;//Internal purpose to track which customer made the transaction....
var paymentService = new PaymentService(amount, cardExpirtyDate, cardHolderName, cardNumber, customerId.ToString());
var transactionResult = await paymentService.PostAsync();
if (transactionResult == null) return View();
if (transactionResult.TransactionApproved && !transactionResult.TransactionError
&& transactionResult.CustomerRef == customerId.ToString())
{
//transaction success....Go to payment Response and send the variables
TempData["TRANSACTION_STATUS"] = "APPROVED";
}
else
{
var message = transactionResult.Message;
}
return View();
}
[HttpPost]
[ValidateAntiForgeryToken]
公共异步任务支付(FormCollection form)
var amount=形式[“amount”].ToString();
var cardExpirtyDate=form[“cardExpirtyDate”].ToString();
var CANDERNAME=表格[“CANDERNAME”]。ToString();
var cardname=“4111111111”;
var customerId=23//跟踪哪位客户进行交易的内部目的。。。。
var paymentService=新的paymentService(金额、cardExpirtyDate、持卡人姓名、卡号、customerId.ToString());
var transactionResult=wait paymentService.PostAsync();
if(transactionResult==null)返回视图();
if(transactionResult.TransactionApproved&!transactionResult.TransactionError)
&&transactionResult.CustomerRef==customerId.ToString()
{
//交易成功…转到付款响应并发送变量
TempData[“交易状态”]=“已批准”;
}
其他的
{
var message=transactionResult.message;
}
返回视图();
}
你的问题是什么?这段代码以什么方式不工作?它不会编译。它需要一个分号;看起来您正在另一个方法中创建一个方法。你能解释一下你想在那里实现什么吗?将视图中的数据发布到pay。我可以从视图直接发布到PaySync吗?我试图在PaySync周围添加括号{},使其成为正文,但也不起作用。@DougFarrell:PaySync
方法的正文周围已经有大括号了。乍一看,这种方法似乎很好。问题是你的另一种方法,Pay
。您没有定义它。我可以从Pay视图直接发布到PaySync吗?谢谢您。我使用@using(Html.beginnform(“payancy”,“Home”)直接发布到payancy,虽然效果很好,但效果更好,因为我可以使用相同的视图。对不起,我的无知。