Передайте значение свойства bool, чтобы автоматически установить флажок, используя ASP.NET MVC и C # - PullRequest
0 голосов
/ 25 мая 2018

Я хочу автоматически установить два флажка для файлов с именами «Файл1» и «Файл2», которые имеют тип задания задания 1, 2 или 3, когда страница открыта.Я использую тип свойства bool в Model для возврата true, если «File1» и «File2» находятся в цикле For.Но почему-то все флажки других файлов проверяются автоматически, это должны быть только флажки для «Файл1» и «Файл2».Вот мои коды:

Web.Config

<appsettings>
   <add key="JobOrderType" value="1,2,3"/>
</appsettings>

CustomerDocument.cs - моя модель просмотра

public class CustomerDocument
{
    public bool IncludeInEmail { get; set; }
    public long DocumentId { get; set; }
    public string DisplayName { get; set; }
    public string DocumentPath { get; set; }
    public bool IsAutoSelectFile { get; set; }
}

ShowJobTypeController.cs

[HttpGet]
public ActionResult ShowJobType() {
        try
        {
             //Make auto select for File1 and File2 for some certain job order types            
             List<CustomerCustomers> customerDocuments;
             var myQuery = dbTest2.JobOrders.FirstOrDefault(z => z.Id == JobOrderId);

             var jobOrderTypeId = new List<int>();
             var configJOTypeValues = ConfigurationManager.AppSettings["JobOrderType"].Split(',');

                    for (var i = 0; i < configJOTypeValues.Length; i++)
                    {
                        var IdValue = 0;
                        if (int.TryParse(configJOTypeValues[i], out IdValue))
                            jobOrderTypeId.Add(IdValue);
                    }

                    ViewBag.IsAutoSelectFileForJobOrder = false;
                    var vmCustomerDoc = new ViewModels.CustomerDocument();
                    var isDocSelected = false;

                    foreach (var doc in customerDocuments)
                    {
                        if (doc != null && jobOrderTypeId.Contains(myQuery.JobTypeId) && (doc.DocumentName.Contains("File1") || doc.DocumentName.Contains("File2")))
                        {
                            vmCustomerDoc.IsAutoSelectFile = true;
                            isDocSelected = vmPCustomerDoc.IsAutoSelectFile;

                            ViewBag.IsAutoSelectFileForJobOrder = isDocSelected;
                        }
                        else
                        {
                           vmCustomerDoc.IsAutoSelectFile = false;
                           ViewBag.IsAutoSelectFileForJobOrder = isDocSelected;
                        }
                    }

        }
        catch 
        {
            //Leave it empty
        }


return View();                  
}

ShowJobType.cshtml

@{
ViewBag.Title = "ViewJobType";
Layout = "~/Views/Shared/_Layout.cshtml";
}

 var docs = ViewBag.CustomerDocuments as List<VM.CustomerDocument>; //Links to CustomerDocument.cs View Model
 <table>
    <tr>
        <th>Check to Include in Email</th>
        <th>Files</th>
    </tr>

    @foreach (var doc in docs)
    {
    <tr>
        <td>
         @{
            var docValue = doc.DocumentId + (string.IsNullOrEmpty(doc.DocumentPath) ? "" : "/" + doc.DocumentPath);
          }

            <input type="checkbox" name="DocEmail" id="DocEmail" value="@docValue" @(ViewBag.IsAutoSelectGuideForJobOrder) ? "checked=\"checked\"" : "") />
        </td>
    </tr>
    }

</table>

1 Ответ

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

Предполагая, что ViewBag.CustomerDocuments имеет модели представлений, которые были обновлены для установки их свойства IsAutoSelectFile, вы можете изменить свою логику для отображения проверок, чтобы проверять значение этого свойства в каждом документе, и использовать ее для добавления проверки во входные данные.field.

<input type="checkbox" name="DocEmail" id="DocEmail" value="@docValue" @(doc.IsAutoSelectFile) ? "checked" : "") />

Кроме того, в вашей текущей логике на заднем конце, если isDocSelected установлено в значение true, оно всегда будет истинным.Если вы используете свойство ViewModel вместо сумки, вы все равно можете удалить его использование из вашей логики.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...