2017-11-07 17 views
0

コントローラー内でアクションImagePopupをトリガーするボタン入力をクリックすると、エラーが発生します。@ Url.Actionをクリックするとエラーが発生するのはなぜですか?

コード:

@{ 
    var listData = (List<HimHer.Models.Stories>)ViewBag.Grid; 

    foreach (var imageName in listData) 
    { 
     <div class="col-md-4"> 
      @Html.HiddenFor(model => model.Story)   
      <input 
       class="img-responsive img-thumbnail" 
       type="image" 
       onclick="location.href='@Url.Action("ImagePopup", "Stories", new {story= imageName.Story})'" 
       src="@("/UploadedFiles/"+ imageName.Image)" 
       alt="Submit" 
       width="100%" 
       height="100%"/> 
     </div> 
    } 
} 

それがエラーをスロー入力をクリックすると:それは存在しているにもかかわらず

The resource cannot be found. Requested URL: /Stories/ImagePopup

。 Storiesフォルダ内にあります。それはモデルのない部分的なビューです。

[HttpPost] 
public ActionResult ImagePopup(string story) 
{    
    ViewBag.PopupStyle = ""; 
    ViewBag.PopupStory = story; 
    return View("GetImagesStories"); 
} 

私は間違っていますか?

+6

'[HttpPost]'が問題です。 – Ric

答えて

1

ため[HttpGet]属性を使用してみてください:

location.href= 

がGETリクエストの種類を行うには、ブラウザの原因となり、バック任意の形式のデータを掲載しませんがあなたのコントローラに。あなたのコントローラ上のメソッドは、([HttpPost]属性のために)ポストリクエストに対してのみ動作するため、動作する可能性のある他のマッチングメソッドは存在しないため、例外が発生します。

ソリューション:

GETメソッドを使用し続けることができます。 [HttpPost][HttpGet]に置き換えると、その半分のところに行きます。もう1つの要件は、Url.Actionコードに、返信する必要なすべての情報が含まれていることを確認することです(たとえば、@Html.HiddenFor(model => model.Story)のすべてのデータは含まれていません。必要があるかどうかわかりません)。

または

コードを変更して、Postメソッドを使用することができます。 <input type="image"<button type="submit">に変更し、各ボタンと隠れた入力要素の周りにフォームを追加します。

2

私はHTTPGetアクションを探しています。 あなたの投稿に電話をかけたいのであれば、HTML.BeginFormを使う必要があります。

1

現在のページのhref場所の設定あなたのImagePopupアクションメソッド

関連する問題