私はより多くのWPF
アプリケーションの背景から来ており、バインディングなどに慣れています。ウェブサイトにジャンプすると、それがはるかに違った働きをするので、問題が発生する可能性があります。asp.net MVC 3の単純なAjaxでモデルを更新し、部分を再レンダリングします
私は単純なAjax
アクションを実行しようとしていますが、どこから始めたらいいか分かりません。基本的には、モデルの1つのプロパティを変更し、ページのその部分を再描画するドロップダウンリストを作成したいと思います。おそらく、これはあまりにも多くのWPFの方法でこれを行うので、私のモデルはそれがするべきもののためにねじれている可能性があります。ここで
は、私はすでに得たものである:
public class TheViewModel
{
private IEnumerable<TheData> _data;
public TheViewModel(IEnumerable<TheData> data)
{
_data = data;
Year = 2012;
}
public int Year { get; set; }
public ICollection<TheData> Data
{
get
{
return _data.Where(d => d.Year == this.Year).ToList();
}
}
public IEnumerable<SelectListItem> YearList
{
// lists the available years
}
}
public class TheData
{
public int Year { get; set; }
//Some more info I want to represent in Table
}
そしてかみそり:
@using (Ajax.BeginForm(new AjaxOptions { UpdateTargetId = "thetable" }))
{
@Html.DropDownListFor(model => model.Year, Model.YearList, new { AutoPostBack = "true"})
<input type="submit" name="name" value="Submit" />
}
<table id="thetable">
<thead>
//some headers
</thead>
<tbody>
@foreach (var item in Model.Data)
{
//row for each data
}
</tbody>
</table>
あなたが見ることができるように、私は更新されるYearプロパティを望んだし、新しいコールがあることを新しい情報をもたらすDataプロパティ用に作成されました。その情報はthetable
に表示されます。
[OK]をありがとう、これは私が必要なものです。あなたの解決策として、私はそれを2つのモデルに分けて、アップデートの外にある情報を1つに、更新可能なものを別のものに入れていくことにしました。問題既定のデータが設定されています。 Html.Partialは、他のビューモデルをデフォルトの設定でもう一方のビューモデルに含める必要があることを意味します。だから私は代わりにHtml.Actionを呼び出すことができますが、取得する代わりにポストアクションを呼び出す方法を確信できないことを期待していました。 –
もう一つの問題は、スタイリングのためにDropDownListがpartialView内にあることです。それは初めてではありますが、もう一度は動作しません。 –
@IngóValsの場合、このddlが後でDOMに追加される場合は、ドロップダウンリストのchangeイベントにサブスクライブするために '.delegate'または' .on(in jQuery 1.7+)を '.change'の代わりに使用してくださいたとえばAJAX。 –