1

剣道グリッドを使用してコントローラーから収集されたメールのリストを表示しました。ユーザーがグリッド行をクリックすると、剣道エディターにメール本文が表示されます。エディターでメールを編集して、データベースに保存します。 Webサービスを使用します。しかし、サーバー側でc#コードを操作するのは、それほど簡単ではありません。Javascriptコードが多すぎないようにします。現在のコードはそのようなものです

__ _ __ index.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);
        }

問題は、エディターからの長い電子メール本文では機能しないことです。私たちは上記のコミュニケーション方法が好きではありません。

JavascriptではあまりC#ドメインになりたくありません。

私の質問は次のとおりです。

  1. 剣道UIコントロールからサーバー側と対話するためのベストプラクティスは何ですか(コントローラーから値を取得し、コントローラーを介して値を設定しますか?

  2. メール本文をサーバーに送信するための送信ボタンなど、簡単な例を挙げて説明してください。

  3. 剣道UIでテスト駆動開発を行うことは可能ですか?どのようにまたは例が非常に役立ちます。

前もって感謝します..

4

1 に答える 1

1

問題は、エディターからの長い電子メール本文では機能しないことです。私たちは上記のコミュニケーション方法が好きではありません。

GETの代わりにPOSTを使用します。

[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");
            }
        }
    });

剣道UIコントロールからサーバー側と対話するためのベストプラクティスは何ですか(コントローラーから値を取得し、コントローラーを介して値を設定しますか?

私の経験から、これは良いアプローチです(AJAXリクエストを使用)。

于 2013-01-04T09:26:01.530 に答える