Как правильно MVC разместить значения, когда данные не доступны из базы данных? - PullRequest
0 голосов
/ 10 мая 2018

Я занимаюсь разработкой примера кода и хочу правильно использовать технологию MVC.

У меня есть представление, которое запрашивает данные из базы данных, если данные существуют, то они будут отображаться, в противном случае будут отображаться некоторые другие значения:

Вид:

<table>
        <tr>
            <td>Status: </td>
            <td>
                <input type="text" name="txtStatus" value="@Model.StatusChoice.FirstOrDefault().CurrentStatus" />
            </td>
        </tr>
</table>

Контроллер:

public ActionResult RStatusC(string CurrentStatus)
{
    return View(UpdateMainGrid(CurrentStatus));
}

public DataList UpdateMainGrid(string CurrentStatus)
{
    StatusModel Choices = new StatusModel();
    Choices.GetStatus(DB, CurrentStatus);
    return Choices;
}

Модель:

public List<RequestedStatusC> GetStatus(DB_Entities DB, string CurrentStatus)
{            
    List<RequestedStatusC> SR = new List<RequestedStatusC>();
    SR = DB.Database.SqlQuery<RequestedStatusC>(@"SELECT CurrentStatus
                                                    FROM MyTable
                                                    WHERE CurrentStatus = {0}
                                                    ORDER BY StatusKey", CurrentStatus).ToList();
    if (!SR.Any()) SR.Add(new RequestedStatusC { CurrentStatus = (CurrentStatus == "" ? "Missing" : CurrentStatus) });
    return SR;
}

Это правильный путь? Особенно с использованием if (!SR.Any()) в Model ?

Ответы [ 2 ]

0 голосов
/ 10 мая 2018

Удалить условие в вашей модели, добавить условие в вашем представлении

@if (Model.StatusChoice != null)
{<table>...</table>}
0 голосов
/ 10 мая 2018

Вы должны попробовать, как показано ниже, код

<table>
        <tr>
            <td>Status: </td>
            <td>
if(@Model.StatusChoice.FirstOrDefault() != null && @Model.StatusChoice.FirstOrDefault().CurrentStatus != ""){
                <input type="text" name="txtStatus" value="@Model.StatusChoice.FirstOrDefault().CurrentStatus" />
}
else{
<input type="text" name="txtStatus" value="Missing" />
}
            </td>
        </tr>
</table>

В вашей модели удалить, если условие,

public List<RequestedStatusC> GetStatus(DB_Entities DB, string CurrentStatus)
{            
    List<RequestedStatusC> SR = new List<RequestedStatusC>();
    SR = DB.Database.SqlQuery<RequestedStatusC>(@"SELECT CurrentStatus
                                                    FROM MyTable
                                                    WHERE CurrentStatus = {0}
                                                    ORDER BY StatusKey", CurrentStatus).ToList();
    //if (!SR.Any()) SR.Add(new RequestedStatusC { CurrentStatus = (CurrentStatus == "" ? "Missing" : CurrentStatus) });
    return SR;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...