簡體   English   中英

如何停止ASP.NET MVC中的視圖返回默認值

[英]How to stop view returning default value in ASP.NET MVC

我有一個運行ASP.NET MVC 1的站點,並且遇到了一個錯誤,該錯誤將模型中的布爾值重置為默認值,因為視圖中未使用該值。

控制器的代碼:

public ActionResult Edit(Guid id)
{
    Service service = GetService(id);

    if (service == null)
        return View("NotFound");

    return View(service);
}

當視圖代碼具有:

<label for="IsActive"> Is Active: </label> 
<%= Html.TextBox("IsActive") %>

它工作正常,但是一旦將其刪除,則isactive字段始終返回為false。 我不再希望從此視圖中看到或修改isactive,但是刪除它已導致該值丟失,我嘗試設置該值並且不顯示

<% Html.TextBox("IsActive"); %>

但這仍然使它默認為false

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Edit(Service service)
{
    //UpdateLogic
}

在post方法中,無論IsActive以前是什么,Service.IsActive始終為false

基本上,我只是想知道如何才能在不顯示視圖中顯示文本框的情況下保持網站傳遞的值(嘗試過用google搜索,但未能獲得正確的單詞組合以獲得不錯的結果)

您可以在頁面上將其添加為“隱藏”嗎?

<%= Html.Hidden("IsActive"); %>

您可以在頁面上將其隱藏為“隱藏”字段:

<% Html.Hidden("IsActive"); %>

但!! 不建議這樣做。 因為操作值非常容易,而且您不想要那樣。

最好的方法就是從數據庫中獲取價值。

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Edit(Service service)
{
    Service originalService = GetService(id);

    UpdateModel(originalService, new string[] { "Field1thatyouwanttoupdate", "fieldname2" });
}

這樣,您將更新所需的所有字段,但不會更新IsActive字段。

作為快速解決方案,您可以使用隱藏字段代替文本框,然后在其中存儲值。

但是,通常,如果您不想顯示或更新值,為什么要將其發送到視圖? 創建僅包含視圖中實際需要的數據的ViewModel並將其來回發布。

將其創建為隱藏值:

<input id="IsActive" type="hidden" value="true" />

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM