我需要使用Razor和Devexpress控件製作一些表單。當用戶打開Devexpress彈出窗口控件時,會出現一個需要輸入字段的表單。 這是我的觀點:如何發佈表單?
@model Models.Request
@Html.DevExpress().PopupControl(
settings =>
{
settings.Name = "newRequest";
settings.CallbackRouteValues = new { Controller = "Request", Action = "RequestForm" };
settings.EnableClientSideAPI = true;
settings.Width = 450;
settings.ShowHeader = true;
settings.ShowShadow = true;
settings.PopupAnimationType = AnimationType.Fade;
settings.AllowDragging = true;
settings.Modal = true;
settings.SetContent(() =>
{
using (Html.BeginForm())
{
ViewContext.Writer.Write("<div id = 'products'>");
foreach(var product in Model.Products)
{
Html.RenderPartial("ProductPartial", product);
}
ViewContext.Writer.Write("</div>");
//Total days field
@Html.DevExpress().SpinEdit(
cSettings =>
{
cSettings.Name = "numberOfProducts";
cSettings.Properties.EnableClientSideAPI = true;
cSettings.Width = 125;
cSettings.Properties.MinValue = 0;
cSettings.Properties.MaxValue = 100;
cSettings.ControlStyle.BackColor = System.Drawing.Color.FromArgb(82, 82, 82);
cSettings.ControlStyle.ForeColor = System.Drawing.Color.White;
}).Bind(Model.NumberOfProducts).GetHtml();
//POST BACK
@Html.DevExpress().Button(saveSett =>
{
saveSett.Name = "Save";
saveSett.Text = "Save";
saveSett.Width = 40;
saveSett.Height = 25;
saveSett.ControlStyle.CssClass = "button";
saveSett.Styles.EnableDefaultAppearance = false;
saveSett.EnableClientSideAPI = true;
saveSett.UseSubmitBehavior = true;
//saveSett.ClientSideEvents.Click = "function(s, e) { if(CheckValidation(s, e)) {} }";
}).GetHtml();
}
});
}).GetHtml();
我希望,當我的觀點被渲染,它會調用HTTP GET方法,但它是不是這樣的,它總是調用POST方法(如果有GET後用相同的名稱):
settings.CallbackRouteValues = new { Controller = "Request", Action = "RequestForm" };
這是爲什麼?如果我改變post方法的名稱(這將在提交時調用),它給了我一個錯誤,說沒有方法被調用。
此外,我有我想用於提交表單的按鈕: settings.CallbackRouteValues = new {Controller =「Request」,Action =「RequestForm」}; 但它甚至沒有進入控制器的任何操作方法。爲什麼?
這裏是我的操作方法:
public ActionResult RequestForm()
{
//...
}
[HttpPost]
public ActionResult RequestForm([ModelBinder(typeof(DevExpressEditorsBinder))] Request request)
{
//...
}
如何回來後我的模型?什麼是最好的方式來做到這一點?很明顯,它不能以正常方式使用這些Devexpress控件。我可以以某種方式回發這個模型與jQuery?什麼是最好的方法?請指教。