如何在视图中显示相同的控件而不重复它?

时间:2014-01-10 06:52:14

标签: c# asp.net-mvc view

这里我有一个场景,比如我在一个页面中有4个文本框..如果数据库中有值可用,我必须在那4个相应的文本框中显示这4个值,否则我必须将这4个文本框显示为空。现在我通过检查下面的模型计数来实现它

if (Model.Count() > 0)
{
   // binding the model values to those 4 textbox
}
else
{
  //show 4 textbox 
}

但是在这里我重复了if和else条件中的那4个相同的控件。还有其他方法来实现这个。任何建议??

3 个答案:

答案 0 :(得分:2)

假设您有以下测试模型

public class Test
{
    public string TextBox1 { get; set; }
    public string TextBox2 { get; set; }
    public string TextBox3 { get; set; }
    public string TextBox4 { get; set; }
}

现在在控制器上检查DB中是否存在值,而不是返回值

public ActionResult Index()
    {
        Test test = new Test();
        var valExit == DBCheckFunction();
        if(valExit ! = null)
        {
            test.TextBox1 = valExit.val1 ;
            test.TextBox2 = valExit.val2 ;
            test.TextBox3 = valExit.val3 ;
            test.TextBox4 = valExit.val4 ;
            return View(test);
        }
        else
        {
            return view(test);
        }

    }

您的视图非常简单并且与它绑定模型,只需要编写一次

@model NameSpace.Models.Test

@Html.TextBoxFor(m=>m.TextBox1)
.
.
.
so on

它会自动

我希望这就是你想要的

答案 1 :(得分:0)

尝试tablelayoutpanel,你可以限制它的大小,只能在一个单元格中添加一个控件,这样可以避免你的重复问题

答案 2 :(得分:0)

您可以将模型绑定到文本框,如果模型中存在数据,则会自动将数据放入文本框中。 对于例如 这是我的模型TextBoxValuesModel.cs

public class TextBoxValuesModel
{
    public string value1 { get; set; }
    public string value2 { get; set; }
    public string value3 { get; set; }
    public string value4 { get; set; }
}

现在在控制器中我将一些值放在模型和放大器中然后将其发送到我的视图TextBoxValues.cshtml

  public ActionResult TextBoxValues()
    {
        Models.TextBoxValuesModel tc = new Models.TextBoxValuesModel();
        tc.value1 = "me";
        tc.value2 = "you";
        tc.value3 = "are";
        tc.value4 = "go";
        return View(tc);
    }

现在在我看来,我会将这个模型与像这样的文本框绑定

@model DisplayModes.Models.TextBoxValuesModel
@{
   ViewBag.Title = "TextBoxValues";
 }

@Html.EditorFor(m => m.value1)
<br/>
@Html.EditorFor(m => m.value2)
<br/>
@Html.EditorFor(m => m.value3)
<br/>
@Html.EditorFor(m => m.value4)

如果我没有在控制器中将任何数据放入模型对象中,那么文本框将为空且&amp;如果我输入值,那么它将显示在文本框中。