0

次のような成功またはエラーページを返すことができるコントローラーがあります。

[HttpPost]
public ActionResult File_post(HttpPostedFileBase file)
{
   if (...)
      return View("Success");
   else
      return View("Error");
}

これらの成功ページとエラーページには基本的なテキストのみが含まれており、Shared/_Layout.cshtmlに表示されます。

私のjsでは、リターンビューで定義されたページを呼び出したいのですが、どうすればよいですか?

私はテストしました:window.location.reload();
これは機能しますが、実際のインデックスページをリロードするだけです。
試してみると:http:// xxx / xxx/File_postwindow.location.href = data.url;
ページが存在しないため失敗します。 そして、私がそうする場合: ページは見栄えが良いですが、コンテンツは空です。
$('#main').html(data);

編集:私はjquery.fileuploadを使用しているので、次のようになります:

 <input id="fileupload" type="file" name="file" />

$('#fileupload').fileupload(
{
  done: function (e, data) {
    // Use the return View("Success")
  },
  fail: function (e, data) {
    // Use the return View("Error")
  }
});

私のjqXHR.reponseTextとdata.resultには、良い「成功」または「エラー」htmlがあるので、これでページを埋める必要があると思いますが、どうすればよいですか?

何か案は ?どうもありがとう !

4

4 に答える 4

1

私はそれを行う方法を見つけました。レイアウトにある<div id="main"> ように、data.result を使用してページに「成功」​​または「エラー」メッセージを入力できます。ので、私は持っています :

done: function (e, data) {
  $('#main').html(data.result);
}

return PartialView("Success");

ページが正しく表示されるようになりました。

于 2012-09-28T09:45:34.653 に答える
0

現在のアクションはPOSTリクエストのみを処理できます。したがって、別のアクションを作成して、GETリクエストのビューを返すことができます。

元。

public ViewResult Success()
{
   return View();
}
于 2012-09-27T16:51:22.717 に答える
0

statusCode を 500 または必要なエラー コードに変更できます。

C#

[HttpPost]
public ActionResult File_post(HttpPostedFileBase file)
{
   if (...) 
   {
      return View("Success");
   }
   else
   {
      Response.StatusCode = 500;
      Response.TrySkipIisCustomErrors = true; 
      return View("Error");
   }
}

JS:

$('#fileupload').fileupload(
{
  done: function (e, data) {
    // Use the return View("Success")
  },
  fail: function (e, data) { // http status response != 200
    // Use the return View("Error")
  }
});
于 2012-09-28T07:54:08.900 に答える
0

このコードで試すことができます

$.ajax({
 type: "POST",
 url: Settings.YourUrl,
 data: "{queryString:'" + searchVal + "'}",
 contentType: "application/json; charset=utf-8",
 dataType: "html",
 success: function (data) {
 alert("here" + data.d.toString());
});

ビューにこのコードを追加できます

var Settings= {
    YourUrl: '@Url.Action("Action","Controller")'
}
于 2012-09-27T16:48:22.193 に答える