2017-01-16 5 views
0

私はユーザーがフォームを編集できるアプリケーションを持っています。これは私のコードです:asp.net mvc:mvc形式を無効にする

コントローラとビューモデル:

public class HomeController : Controller 
{ 
    public ActionResult Index() 
    { 
     return View(); 
    } 

    [HttpPost] 
    public ActionResult Edit(MyGlobalObject MyGlobalObject) 
    { 
     MyGlobalObject.Save(); 
     return View(); 
    } 
} 

public class MyGlobalObject 
{ 
    public MyObjectToEdit MyObjectToEdit { get; set; }   
} 

public class MyObjectToEdit 
{ 
    public int MyProperty { get; set; } 

    public string MyProperty1 { get; set; } 

    public bool MyProperty2 { get; set; } 
} 

マイかみそりビュー:すべてがうまく機能しているTestAppliWeb.Controllers.MyGlobalObject

@using (Html.BeginForm("Edit", "HomeController")) 
{ 
    @Html.AntiForgeryToken() 
    @Html.EditorFor(m => m.MyObjectToEdit) 
} 

@model。しかし、このフォームには、MyObjectToEditのMyProperty2に依存する特定の条件に応じて、このフォームに新しい機能を追加したいと思いますが、フォームを表示し続けますが無効にします。すべてのフォームをユーザーに表示する必要があります何かを編集して保存をクリックします。

MyProperty2がtrueの場合、フォームは引き続き編集可能です。そうでない場合は、フォームを無効にする必要があります。しかし、私は私の剃刀のフォームのレンダリングでコードの最小限に抑える方法を知りません。私には解決策がありますが、それはあまりにも "汚れている"ようです:私はjavascriptとCSSでフォームのすべての要素を無効にしました。

フォームを無効にするには、mvc htmlヘルパーなどがあり、これを使ってかみそりビューに書き込むことができますか?あなたの助けを事前に

おかげ

+0

角度を使って解決するかのように見える – NicoRiff

+1

無効なフォームは意味がありません。条件に基づいてコントローラからの単純なテキストのみで別のビューを表示する必要があります。 –

+0

_I javascriptおよびcss_それのどこが悪いんだい? '$("。myform-item ")。prop(" disabled "、true)'。しかし、実際には、編集が必要になるまでフォームを表示しないでください。 – Jasen

答えて

1

は、私は、典型的には、入力フィールドを無効にし、有効にするためにjQueryを使用しています。

を無効にする:

$('#idVar').prop("disabled", true); 

有効にする:

$('#idVar').prop("disabled", false); 
0

をあなたは何ができるか、以下のようなものです:

のすべてを保持するためにヘルパーを作成します。フォームコンテンツ

あなたのビューモデル(またはViewBag)で
@helper FormContent() 
{ 
    @Html.EditorFor(m => m.MyObjectToEdit) 
} 

は、このフォームは読み取り専用表示するかどう表す変数を保持し、その後かみそりビューで

@if (Model.IsReadOnly) 
{ 
    <fieldset disabled="disabled"> 
     @FormContent() 
    </fieldset> 
} 
else 
{ 
    @using (Html.BeginForm("Edit", "HomeController")) 
    { 
     @Html.AntiForgeryToken() 

     @FormContent() 

     <input type="submit" id="submitButton" /> 
    } 
} 

をその値を読んで無効にフィールドセットを設定すると、すべて無効にする必要がありますその内部を制御します。 CSSを使用して、必要のないフィールドセットの書式を削除することもできます。

また、実際のformタグをレンダリングしていないの利益を得るか、それは読み取り専用ですので、全くのボタンを提出してください。

関連する問題