2017-08-22 7 views
3

私はページにリダイレクトしているハイパーリンクを持っています。ページリロード時にクエリ文字列を削除します。

$('.lnkMerging').on("click", function() { 

      var id = $(this).attr('data-id'); 

      window.location = '/Merging/Index/?workItemID=' + id; 
     }); 

コントローラページ内の私の行動は、私はそれがマージページに私をリダイレクトするハイパーリンクをクリックすると、だから何それがないことである

public ActionResult Index(int? workItemID) 
     { 
      MergingVM mergingVM = new MergingVM(); 
      mergingVM.SourceList = GetSourceDropdownList(); 
      mergingVM.WorkItem = (workItemID==null? 0: workItemID.Value) ; 
      mergingVM.MergeActionSelectList = 
      GetMergeProcessActionDropdownList(); 
      PopulateDropDowns(mergingVM); 
      return View(mergingVM); 
     } 

です。 [マージ]ページにリダイレクトされた後、ドロップダウンはid(ホームページで選択)で塗りつぶされ、それに応じてボタンのクリックがトリガーされます。

私の問題マージページをリロードすると、ドロップダウンの値がクリアされません。私はホームページからページをマージするためにリダイレクトした場合、ドロップダウンにはある程度の価値があります。しかし私がそれをリフレッシュするとき、選択された値は行くべきです。私は、クエリ文字列がまだ値を保持していることを理解します。しかし、jqueryでwindows.location.hrefを使用せずにパラメータをアクションに送信する方法はありますか。

+0

アクションにパラメータを送信するためにAjaxを使用できます。 –

答えて

0

パラメータをhtml5のローカル記憶域APIに保存してから、これらのパラメータをページロードのインデックスページで使用できます。インデックスのページロードで

$('.lnkMerging').on("click", function() { 

    var id = $(this).attr('data-id'); 
    localStorage.setItem("workItemID",id); 

    window.location = '/Merging/Index/; 
}); 

あなたはのgetItem localStorage.getItem("workItemID");を使用してそれをretireveし、あなたの要件ごとにそれを使用することができます。

[マージ]ページの読み込み時に、以下のように選択したオプションを明示的に設定してから、その値をローカルストレージから削除する必要があります。

$(document).ready(function(){ 

if(localStorage.getItem("workItemID")!=null){ 
    $("#mydropdownlist").val(localStorage.getItem("workItemID")); 
     localStorage.removeItem('workItemID'); 
    } 
}); 

(この).ATTR( 'データ-ID')VaRのIDで= $を確認してください。 idは、マージページのオプションと同じ値になります。

+0

ハイパーリンクをクリックすると、選択したドロップダウンが削除されます。ハイパーリンクをクリックすると、そのハイパーリンクをクリックすると、ソースを保持している別のマージページにリダイレクトされます。しかし、マージページをリフレッシュすると、マージページのドロップダウンがクリアされるはずです –

+0

私の更新された答えはもっと詳しく説明しています。 –

0

クエリ文字列を消去するには、別のビューにリダイレクトする必要があります。

メソッドへの送信パラメータの代替案を見つけるには、最初にモデルバインドアクションを理解する必要があります。

モデル入札がで値を検索します。

  • フォームデータ
  • ルートデータ
  • クエリ文字列
  • ファイル
  • カスタム(例えばクッキー)

の場合あなたの行動はHttpになる必要があります。あなたのための素晴らしい選択肢になれます。

+0

私はまだ同じ問題があります。私が望むのは、ハイパーリンクをクリックした後で、作業項目がドロップダウンで選択されるべきであるということです。 –

+0

マージページをリフレッシュした後、ドロップダウンをクリアする必要があります。 –

+0

@TinoJoseThannippara、 'GetMergeProcessActionDropdownList'と' PopulateDropDown'に何が入っているのか分かりますか? – PedroSouki

0

私はPOSTを使用してください。あなたがプリセットにしたくない場所はworkItemIDだと思います。

<form action="/Merging/Index" method="POST"> 
    <input type="hidden" name="workItemID" value="1" /> <-- your Id 
    <input type="submit" value="Link to workItemID 1!" /> <-- your link 
</form> 

この方法で、あなたがたがURLでworkItemIDせずに、あなたのビューを取得します:

私はあなたがこのようsomethink使用する必要がありますあなたはリンクを持っているすべての場所を意味します。しかし、あなたはPOSTリンクを<a>タグのように見せるためにCSSを変更する必要があります。ここで

は、あなたのテーブルである:私が正しく理解していれば

@if (@Model.DataSetList[i].StateID == 43) 
{ 
    <td> 
     <form action="/Merging/Index" method="POST"> 
      <input type="hidden" name="workItemID" value="@Model.DataSetList[i].Workitem_ID" /> 
      <input class="lnkMerging" type="submit" value="Merging" /> 
     </form> 
    </td> 
} 
else 
{ 
    <td> 
     <text style="color:darkgrey" contenteditable="false">Merging</text> 
    </td> 
} 
+0

IDは理解しています。これは、作業項目IDをパラメータとして入力するハイパーリンクです。それをあなたのものに変更する方法。 –

+0

@If(@ Model.DataSetList [I] .StateID == 43)他 {​​ {​​Merging } <テキストスタイル= "色:DARKGREY" のcontentEditable = "偽">マージ } –

+0

@TinoJoseThannippara更新 –

0

あなたがして、ハイパーリンクを使用している場合も、あなたは

$('.lnkMerging').on("click", function() { 

     var id = $(this).attr('data-id'); 
     $(this).attr('href','/Merging/Index/?workItemID=' + id) 
}); 
+0

これはdidnotの仕事 –

0

それを試すことができます...以下は、私のために働きました。

URLにIDが追加されている場合は、変数「param」としてコンソールに記録されます。その後、URLが置き換えられます(ページを更新すると、IDはURLから削除されます)。

$(document).ready(function() { 

    var url = window.location.toString; 
    var hostname = window.location.hostname; 
    var pathname = window.location.pathname; 
    var param = window.location.search; 
    $('.lnkMerging').on("click", function() { 

     var id = $(this).attr('data-id');   
     window.location = '/new-page.php?' + id; 

    }); 
    if (pathname == "/new-page.php" && param) { 
     console.log(param); 
     window.history.pushState("string", "Title", "http://yourURL.com/new-page.php"); 
     //Do something with param... 
    } 
}); 

これは、URLにIDが付加されていない場合、ドロップダウンは何もしないことを前提としています。また、URLを正しいものに更新する必要があります(ローカルサーバーでこれを実行しました)。

+0

これはあなたが望んだことを行いますか? – jonhendrix

関連する問題