0

私は、プロジェクト管理ツールであるASP.NETプロジェクトのチームと協力してきました。ほとんどのページは基本的にデータベースからページに何かを書き込んでおり、加えられた変更を保存しています。

これはASP.NETでの最初のプロジェクトです(現在、他のすべてのプロジェクトでASP Classicを使用しています)。先輩からMVCを使用しないように言われました。

現在の問題は、私たちのデザイナー/フロントエンド開発者がASP.NETに関してはほとんど無知であり、可能であればVisualStudioも使用したくないということです(彼はOSXを使用しています)。

例:たとえば、動的リストを作成するための最良の方法は何でしょうか。

これは私たちが現在行っていることです:

<div id="tasks" overflow-y="scroll" style="height:400px;">
   <ul id='taskList'>
     <% PrintTasks(); %>
   </ul>
</div>

コードビハインド:

public void PrintTasks()
{
        foreach (var task in _tasks)
        {
            Response.Write("<li rel='#' id='task_"+task.TaskID+"'>" +
                   ...
                "</span>" +
                "</li>");
        } 
}

この場合、設計者がコードビハインドに入らずにliタグを編集することはできません。

ありがとう。

4

6 に答える 6

2

なぜMVCがオプションではないのかという疑問を絶対に提起する必要があります。それはあなたがしていることにはるかによく適合し、したがってコード品質もはるかに良くなり、プロジェクト全体に役立ちます。チームの生産性(および設計者がVSを「エスケープ」する能力)については言うまでもありません。

RazorでCSHTMLを実行すると、あなたとあなたのチームはほとんど「家にいる」と感じるでしょう。

于 2012-09-07T09:45:03.447 に答える
2

フロントエンドの開発者はそれを吸い上げてVSの使い方を学ぶ必要があるのではないかと思います。チーム全体がASP.Netに取り組んでいる場合、VSの怒りから逃れる方法はありません。

MVCは、C#とHTMLの分離に適しています。Razorエンジンを使用すると、コードとマークアップを分離することができます。

あなたのリストでは、おそらくRazorでそのようなことをするでしょう:

@foreach (var item in items)
{
    <li rel="#" id ="blah_@item.id">@item.text</li>
}
于 2012-09-07T09:43:44.600 に答える
1

ASP.NET WebFormsを使用する場合、次の提案をします。

  1. CSSを活用してください。デザイナーがコードビハインドによって生成されたHTMLを編集できないことを受け入れますが、CSSをインテリジェントに使用すれば、おそらくその課題を克服できます。この例では、 IDdivを持つul要素と要素があり、デザイナーはCSSを変更して、CSSのカスケードプロパティを使用してこれらの要素と子要素のスタイルを設定できます。(例#taskList > li:)
  2. 必要に応じて、クライアント側のテンプレートを検討してください。ユーザーにデータを提示する場合、fx。リストについては、テンプレートフレームワークの使用を検討してください。(jQuery fx)これらのテンプレートは、デザイナーがVSなしで編集できる個別のファイルに配置できます。(参照:外部ファイルからjQuery-Templatesをロードしますか?
  3. Response.WriteHTMLの構築に使用する代わりに、ASP.NETWebFormsで使用可能なさまざまなコントロールの学習に時間を費やしてください。コードビハインドでの使用Response.Writeは一般的に非常に悪い習慣であり、コードがすぐにスパゲッティに変わり、保守が不可能になるため、避ける必要があります。また、後のプロジェクトでASP.NET WebForms(またはMVC)を使用したいと考えており、上級管理職と管理職にASP.NETの利点を理解してもらいたい場合は、フレームワークの学習に少し時間を費やす必要があります。これを行うと、保守が容易な、より構造化されたコードが提供されます。ただし、ASP.NETで現在のクラシックASPプラクティスを使用している場合、上級管理職も管理職もASP.NETを使用する利点を理解できない可能性があります。そして、それは残念なことです。なぜなら、メリットは本当にそこにあるからです。:-)

幸運を!

于 2012-09-07T10:05:56.850 に答える
1

あなたの文脈によれば、主な摩擦点はあなたのフロントエンド開発者です。

したがって、javascriptフレームワーク(Knockout.js、angular.jsなど)を使用することにします。フロントエンド開発者に、選択したWebスタック(ASP.NET MVC、Web Apiなど)によって提供されるJSONから必要なすべての情報を取得するUIを設計させます。これにより、必要なツールを使用してUIを開発できるようになります。また、UIを気にせずにバックエンドで作業できます。JSONコントラクトに同意し、それらに固執する必要があります。

このようにして、関心の分離を明確に保つことができます。-誰もが最も簡単に使用できるツールを使用して開発します-レイヤーの組み合わせや一致はありません(つまり、コードの背後にHTMLが「生成」されます)

そして、あなたのリストは(ノックアウトを使用して)次のようになります(構文は正確でない場合があります):

<ul data-bind="foreach: myList">
    <li><span data-bind="text: Text, attr: { id: Id }" /></li>
</ul>

コードビハインド(asp.net mvcを使用)(構文が正確でない場合があります)

public JsonResult GetList()
{
    var res =  myServiceLayer
        .GetListItems()
        .Select( 
            x => new { Text = x.Val, Id = x.Id } 
        );
    return JsonResult( res );
}
于 2012-09-07T09:40:06.710 に答える
0

あなたが言及した特定のケースでは、「クラシック」asp.netでは、リピーターを使用することになっています:http: //msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.repeater( v = vs.80).aspx

<asp:Repeater id="Repeater1" runat="server">                       
    <ItemTemplate>
        <li rel='#' id='task_<%# DataBinder.Eval(Container.DataItem, "TaskID") %>'>
            <span>Whatever</span>
        </li>
      </ItemTemplate>            
 </asp:Repeater>

基本的に、使用可能なWebコントロールを学習し、必要なたびに新しいWebコントロールを作成し、asp.netWebフォームの制限付きバインディング/テンプレートシステムからできるだけ多くのものを取得しようとします。

于 2012-09-07T09:43:48.063 に答える
0

ここでリピーターを使用します:

<asp:Repeater runat="server" ID="r1">
<ItemTemplate>
  <li rel='#' id='<%# Eval("id","prefix{0}") %>'><span>
     <asp:Label runat="server" ID="t1"><%# Eval("Caption") %></asp:Label>
  </span></li>
</ItemTemplate>
</asp:Repeater>

およびcsファイル:

r1.DataSource=list;
r1.DataBind();
于 2012-09-07T09:52:52.750 に答える