vs'12 , KendoUI, asp.net C# MVC4 Internet Application EF Code First
KendoUI DropDownList から Razor ビューの MVC コントローラーに値を渡す方法を確認したい
コントローラ
[HttpPost]
//[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Index(ViewModelCCTRST model) //, FormCollection values)
{
if (ModelState.IsValid)
{
string clt = model.Clients;
string cnt = model.Countys;
string twn = model.TownShips;
...
...
//string xx = values["Clients"];
// xx = values["Countys"];
// xx = values["TownShips"];
...
...
*clt、cnt、twnおよびその他の変数は常にnullです...なぜこれらが常にnullなのかという疑問があります**
かみそりビュー:
@ @(Html.Kendo().DropDownListFor(m=>m.Ranges)
//.Name("ranges")
.HtmlAttributes(new { style = "width:300px"}) //, id = "ranges"})
.OptionLabel("Select Range...")
.DataTextField("RangeName")
.DataValueField("RangeID")
.DataSource(source => {
source.Read(read =>
{
read.Action("GetCascadeRanges", "AddCCCTRST")
.Data("filterRanges");
})
.ServerFiltering(true);
})
.Enable(false)
.AutoBind(false)
.CascadeFrom("TownShips")
)
<script>
function filterRanges() {
return {
townShips: $("#TownShips").val()
};
}
私が試したこと
- 設定 var text = dropdownlist.text();
- setting var DDLtracts = $("#tracts").data("kendoDropDownList");
ID に関して、またはコントローラーに関して何を試しても、コントローラーで値を「読み取る」ことはできません。また、アクション リンクで値を取得して渡すこともできません。
助けてください!!
以下のmmillicanヘルプによるコメントごとのコードの更新
string sct = model.Sections;
string trt = model.Tracts;
ビューモデル
public class ViewModelCCTRST
{
public string Clients { get; set; }
public IEnumerable<dbClient> AvailableClients { get; set; }
public string Countys { get; set; }
public IEnumerable<dbCounty> AvailableCounties { get; set; }
public string TownShips { get; set; }
public IEnumerable<dbTownShip> AvailableTownShip { get; set; }
public string Ranges { get; set; }
public IEnumerable<dbRange> AvailableRanges { get; set; }
public string Sections { get; set; }
public IEnumerable<dbSection> AvailableSection { get; set; }
public string Tracts { get; set; }
public IEnumerable<dbTract> AvailableTracts { get; set; }
}
これまでに行ったことは次のとおりです。
- 削除
[AcceptVerbs(HttpVerbs.Post)]
さFormCollection values
れ、コントローラーから - 各 DropDownList から削除
//.Name("Tracts")
され、省略可能.HtmlAttributes(new { id = "tracts"})
DropDownListFor(m=>m.Tracts)
DDL ごとに追加され、インポートされた@model OG.ModelView.ViewModelCCTRST
CustomViewModel は以下で読むことができます- すべての小文字
.CascadeFrom("clients")
(クライアントだけでなく) の名前を大文字に変更.CascadeFrom("Clients")
以下の alert("Select Tract to Upload:\n....); というタグは、これらの変更中に実際に 1 回アラートを出しましたが、Razor ビューからアクションリンクで送信しようとしているモデルと変数はどちらも null のままです。アラートがポップアップしなくなりました。
$(document).ready(function () {
$("#get").click(function () {
var clients = $("#Clients").data("kendoDropDownList"),
countys = $("#Countys").data("kendoDropDownList"),
TownShip = $("#TownShip").data("kendoDropDownList"),
ranges = $("#Ranges").data("kendoDropDownList"),
sections = $("#Sections").data("kendoDropDownList"),
tracts = $("#Tracts").data("kendoDropDownList");
var clientsInfo = "\nclients: { id: " + clients.value() + ", name: " + clients.text() + " }",
countysInfo = "\ncountys: { id: " + countys.value() + ", name: " + countys.text() + " }",
....
....
alert("Select Tract To Upload:\n" + clientsInfo + countysInfo + townShipsInfo + rangesInfo + sectionsInfo + tractsInfo);
});
});
アップデート
修正された構文の問題により、scipt エラーが修正されました。現在clientsInfo + countysInfo + townShipsInfo + rangesInfo + sectionsInfo + tractsInfo
、データが取り込まれています - これは誰かがこれを私のコントローラーに届けるのに役立ちますか?