2016-10-19 6 views
0

2つの別々のWebアプリケーションを使用して2つのサイト(同じドメイン)を持っています。私はあるサイトから別のサイトへのリンクを持つことができるようにしたい。このリンクは他のアプリケーションに大量のデータを送信するので、他のアプリがこのデータを使用して処理できるように、POSTを使用する必要があります。MVC 5外部サイトからJSONを投稿し、データを含むビューを返す

したがって、domain.com/site1のAJAX呼び出しと、JavaScript経由で前記データにアクセスできるdomain.com/site2のビューを起動するPOSTデータを使用することです。

私はコントローラにデータを投稿し、前記データを使ってかみそりビューを返すことができると思いました。

(私はコントローラー= ApiControllerので、このdoens't仕事を知っているのに!)このような何か:

public class Site2Controller : Controller 
{ 
    [HttpPost] 
    public ActionResult Index([FromBody]Dictionary<string, dynamic> postedData) 
    { 
     var model = new Site2DataModel(); 
     model.someParam = postedData.someParam; 

     return View(model); 
    } 
} 

そして、私の見解では(これはダムであるなら、私に知らせて):

@model Site2.Site2DataModel 
@{ 
    Layout = "~/Views/Site2View.cshtml"; 
} 

<form class="dataForm"> 
    <input type="hidden" name="someParam" value="@Model.someParam"/> 
</form> 

そして、私のJSで、のようなもの:

var viewData: any = $('.dataForm').serializeArray().reduce(function (obj, item) { 
    obj[item.name] = item.value; 
    return obj; 
}, {}); 

var viewModel = viewData.someParam; 
//... 

繰り返しますが、私は、これは動作しません知っている、との理由は明白です、この状況に対処するためのより良い方法はわかりません。何かご意見は?

+0

が見えます。しかし、この要件は、WebサービスやAPI呼び出しのような他のアーキテクチャ/ソリューションに洗練される可能性があります。あなたが答えを持っている最も簡単なものにあなたの要件を徹底的に熟考してください。 iframeは使用しないでください。 – Nathan

答えて

0

私はそれもうまくいくとは思わないが、試していないので、別のプロジェクトからActionResult/Viewを返すことができるかどうかは分かりません。

ActionResult/Viewを返す代わりに、私はJsonResult/JSONを返してから、もう1つのプロジェクトのajaxを呼び出しています。

プロジェクト1があります。

コントローラー:その後、

[HttpPost] 
public JsonResult Proj1Action(YourModelHere somedata) 
{ 
    //some data modification here 
    ... 
    SomeModel modifiedModelData = new SomeModel 
    { 
     name = "testname" 
    } 
    return JSON(modifiedModelData); 
} 

とプロジェクト2にAJAXを行います。あなたはSITE1からサイト2にデータを投稿したいよう

<script> 
    $.ajax({ 
     method: "POST", 
     url: "http://Project1/Project1Controller/Proj1Action", 
     data: {somedata: dataYouWantToPass}, 
     dataType: 'json', 
     success: function(result){ 
      //result is the modifiedModelData that you got from Proj1Action 
      console.log(result.name); 
     }, 
     error: function(xhr){ 
      console.log(xhr); 
     } 
    }) 
</script> 
関連する問題