1

我使用剑道网格显示从控制器收集的电子邮件列表,然后当用户单击网格行时,电子邮件正文显示在剑道编辑器中,我想在编辑器上编辑电子邮件并将电子邮件正文保存回数据库使用网络服务。但是要在服务器端与 c# 代码进行交互并不是那么简单。我们不想有太多的 Javascript 代码。当前代码是这样的

__ _ __索引.aspx

<%: Html.Kendo().Grid(Model.mailList)
        .Name("Grid")
                    .HtmlAttributes(new { style = "height:auto;font-size: medium;" })
        .Columns(columns =>
        {
            columns.Bound(p => p.MailId).Width(200);
            columns.Bound(p => p.From.Value).Width(200).Title("Sender");
            columns.Bound(p => p.Subject).Width(200);
            //columns.command(commands =>
            //{
            //    commands.destroy();
            //});

        }) 
        .Pageable()
        .Sortable()
        .Scrollable()
        .Filterable()

        .Events(events => events.Change("onChange")) 

        .DataSource(dataSource => dataSource
            .Ajax()
            .ServerOperation(false)
            //.Destroy(destroy => destroy.Action("Index","Home"))
            .Model(model =>
            {
                //The unique identifier (primary key) of the model is the ProductID property
                model.Id(p => p.MailId);

                // Declare a model field and optionally specify its default value (used when a new model instance is created)
                model.Field(p => p.Subject).DefaultValue("N/A");

                // Declare a model field and make it readonly
                model.Field(p => p.Sender).Editable(false);
            })                              

            .PageSize(5)          
            )
            .Selectable()

%>

function sendMailToController() {
       $.ajax({
            url: "/Home/SendMail/",
            data: {
                emailID: mailID,
                emailBody: mailBody

            },
            cache: false,
            type: "GET",
            timeout: 10000,
            dataType: "json",
            success: function (result) {
                if (result.Success) { 
                   alert("Operation Completed");
                } else {
                    alert("Operation Failed");
                }
            }
        });
    }

__ _ __ _控制器代码

public ActionResult Index()
        {

            MailModel mailModelobj = new MailModel();
            mailModelobj.GetMailList();
            return View(mailModelobj);


        }

public JsonResult SendMail(Guid emailID, string emailBody)
        {
            MailModel mailModelObj = new MailModel();
            mailModelObj.body = emailBody;
            mailModelObj.mailID = emailID;
            var Result = mailModelObj.SendMail(mailModelObj);

            return Json(new { Success = true, Result }, JsonRequestBehavior.AllowGet);
        }

问题是,它不适用于来自编辑器的长电子邮件正文。我们不喜欢上面的沟通方式。

我们希望在 C# 领域中不要过多地使用 Javascript。

我的问题是:

  1. 从 kendo ui 控件与服务器端交互的最佳实践是什么(从控制器获取值并通过控制器设置值?

  2. 你能否用一些小例子来解释一下,比如提交按钮,将电子邮件正文提交回服务器。

  3. 是否可以使用 kendo UI 进行测试驱动开发?如何或示例将非常有帮助。

提前致谢..

4

1 回答 1

1

问题是,它不适用于来自编辑器的长电子邮件正文。我们不喜欢上面的沟通方式。

使用 POST 而不是 GET:

[HttPost]
public JsonResult SendMail(Guid emailID, string emailBody)
{
    ...
}


$.ajax({
        url: "/Home/SendMail/",  (you should use Url.Action here)
        type: "POST",
        data: {
            emailID: mailID,
            emailBody: mailBody

        },
        cache: false,
        timeout: 10000,
        dataType: "json",
        success: function (result) {
            if (result.Success) { 
               alert("Operation Completed");
            } else {
                alert("Operation Failed");
            }
        }
    });

从 kendo ui 控件与服务器端交互的最佳实践是什么(从控制器获取值并通过控制器设置值?

根据我的经验,这是一种很好的方法(使用 AJAX 请求)。

于 2013-01-04T09:26:01.530 回答