Member 10928805 Ответов: 1

Подстрока в ядре MVC с использованием entityframework core mysql


У меня есть форма сотрудника с столбцом Id(первичный ключ) и столбцом идентификационного номера.
Я должен получить первичный ключ из первых десяти цифр идентификационного номера, когда моя форма сохраняет первые десять цифр, они должны перейти в поле первичного ключа.
Мой взгляд находится в html, а не в razor.

Что я уже пробовал:

Я пробовал использовать элементы razor и добавлять хранимую процедуру в mysql, но я не могу вызвать хранимую процедуру из своего проекта.

Редактировать: (Подробности из решения № 2)

Я не знаю, как реализовать вышесказанное в моем текущем проекте.

это мой контроллер:
namespace MySqlCRUD.Controllers
{

    public class EmployeeController : Controller
    {
        private readonly AppDataContext context;

        public EmployeeController(AppDataContext context)
        {
            this.context = context;
        }

        [HttpGet]

        public IActionResult Index()
        {
            //var emps = context.Employees.ToList();

            // var emps = context.Employees
            // .FromSql("EXECUTE dbo.new_procedure")
            // .ToList();
            // return View(emps);

            using (var _context = new AppDataContext())
            {
                var data = context.Employees.FromSql($"SELECT IdentityNumber, substring(Id,1) from Hu.Employees").ToList();

                return View(data);
            }
        }

        [HttpGet]

        public IActionResult Create()
        {

            
           
            return View();
        }

        [HttpPost]

        public IActionResult Create(Employee model)
        {
            //SELECT IdentityNumber, substring(Id, 1) from Employees
            if (!ModelState.IsValid) return View(model);

            context.Add(model);
            ModelState.Clear();

            context.SaveChanges();
            ViewBag.Message = "Added succesfully";
            return View("create");

        }


моя модель:

[Key]
        public string Id { get; set; }

       // public string Id
       //  {
          //  get { return IdentityNumber != null ? IdentityNumber.Substring(10) : ""; }
       // }
        public string EmpName { get; set; }
     
        public string EmpSurname { get; set; }
        public string IdentityNumber { get; set; }

        [DataType(DataType.Date)]
        public DateTime? DateOfBirth { get; set; }

        public string Gender { get; set; }
        public string Race { get; set; }
        public string MaritalStatus { get; set; }

        public string ContactNumber { get; set; }
        public string EmailAddress { get; set; }
        public string PhysicalAddress { get; set; }
        public string PostalAddress { get; set; }

        public string Occupation { get; set; }
        public string Department { get; set; }
        public float AnnualIncome { get; set; }
        public float BasicSalary { get; set; }

        [DataType(DataType.Date)]

        public DateTime StartDate { get; set; }
        public string EducationLevel1 { get; set; }
        public string EducationLevel2 { get; set; }
        public string EducationLevel3 { get; set; }
        public string EducationLevel4 { get; set; }
        public string Education { get; set; }


    }



}


мой взгляд

@model MySqlCRUD.Models.Employee

<br/>
<style>
    .form-control {
        width: 200px !important;
    }
    .form-horizontal {
          margin: 5px 100px 100px 100px;
  

    }
    .btn-default {
        color: #0033cc;
        width: 80px;
        height: 30px;
        font-weight: bold;
    }

    .col-sm-2 {
        font-weight: bold;
    }

    .col-sm-3 {
        font-weight: bold;
    }

    h4{
    font-weight:bold;
    }

   .bdr{
       height:20px;

   }
   .bdr1{
       height:20px;

   }
   body{
                margin: 0;
                padding: 0;

   }
   
   
    nav{
        
      }

    h1{
        
    }
</style>
<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="utf-8">
 <meta name="viewport" content="width=device-width, initial-scale=1">


</head>


<body>
    <nav id="con">
    <div class="container">
        <div class="container bdr1">
     

<form class="form-horizontal" asp-action="Create" asp-controller="Employee" method="post">
    <br/>
<br/>
    <div asp-validation-summary="ModelOnly"></div>
    <h1 >                        Add New Employee Details</h1>
    <br />
    <h4>
                                Personal Details              
                          
                                          
        Contact Details
    </h4>
   <div class="form-group " col-sm-3" style="display: flex">

        <input class="form-control col-sm-2" type="text"  value="Id" data-toggle="tooltip" data-placement="left" title="Name of employee" readonly>
        <div class="col-sm-3">
            <span asp-validation-for="Id" class="text-danger"></span>

        </div> <br/>

        <input class="form-control col-sm-2" type="text" value="Contact Number" data-toggle="tooltip" data-placement="left" title="Direct mobile line of the employee" readonly>
        <div class="col-sm-3">
            <input asp-for="ContactNumber" class="form-control" type="text" placeholder="Contact Number">
            <span asp-validation-for="ContactNumber" class="text-danger"></span>

        </div>
</div>
    <div class="form-group " col-sm-3" style="display: flex">

        <input class="form-control col-sm-2" type="text"  value="Name" data-toggle="tooltip" data-placement="left" title="Name of employee" readonly>
        <div class="col-sm-3">
            <input asp-for="EmpName" class="form-control" type="text" placeholder="Name" >
            <span asp-validation-for="EmpName" class="text-danger"></span>

        </div>
         <input class="form-control col-sm-2" type="text" value="Email Address" data-toggle="tooltip" data-placement="left" title="Personal email address of the employee" readonly>

        <div class="col-sm-3">
            <input asp-for="EmailAddress" class="form-control" placeholder="Email Address">
            <span asp-validation-for="EmailAddress" class="text-danger"></span>

        </div>
       
    </div>

    <div class="form-group " col-sm-3" style="display: flex">

        <input class="form-control col-sm-2" type="text" value="Surname" data-toggle="tooltip" data-placement="left" title="Surname of employee" readonly>
        <div class="col-sm-3">
            <input asp-for="EmpSurname" class="form-control" placeholder="Surname">
            <span asp-validation-for="EmpSurname" class="text-danger"></span>

        </div>
       <input class="form-control col-sm-2" value="Residential Address" data-toggle="tooltip" data-placement="left" title="Address whereby the employee stays" readonly>
        <div class="col-sm-3">
            <input asp-for="PhysicalAddress" class="form-control" placeholder="Residential Address">
            <span asp-validation-for="PhysicalAddress" class="text-danger"></span>

        </div>
    </div>
    <div class="form-group" col-sm-3" style="display: flex">
        <input class="form-control col-sm-2" value="Identity Number" data-toggle="tooltip" data-placement="left" title="Identification Number of the employee" readonly>
        <div class="col-sm-3">
            <input asp-for="IdentityNumber" class="form-control"  placeholder="Identity Number">
            <span asp-validation-for="IdentityNumber" class="text-danger"></span>

        </div>
         <input class="form-control col-sm-2" value="Postal Address" data-toggle="tooltip" data-placement="left" title="Address of the employee for sending mail" readonly>
        <div class="col-sm-3">
            <input asp-for="PostalAddress" class="form-control" placeholder="Postal Address">
            <span asp-validation-for="PostalAddress" class="text-danger"></span>

        </div>
    </div>


    <div class="form-group" col-sm-3" style="display: flex">
        <input class="form-control col-sm-2" value="Date of Birth" data-toggle="tooltip" data-placement="left" title="Birth date of the employee" readonly>
        <div class="col-sm-3">
            <input asp-for="DateOfBirth" class="form-control" placeholder="Date of Birth">
            <span asp-validation-for="DateOfBirth" class="text-danger"></span>

        </div>

       
    </div>

    <div class="form-group" col-sm-3" style="display: flex">
        <input class="form-control col-sm-2" value="Gender" data-toggle="tooltip" data-placement="left" title="Gender of the employee" readonly>
        <div class="col-sm-3">
            <select asp-for="Gender" class="form-control">
                <option value="0">Select</option>
                <option value="Female">Female</option>
                <option value="Male">Male</option>
                <option value="Other">Other</option>

            </select>
        </div>

    </div>


    <div class="form-group" col-sm-3" style="display: flex">
        <input class="form-control col-sm-2" value="Race" data-toggle="tooltip" data-placement="left" title="ethnicity of the employee" readonly>
        <div class="col-sm-3">
            <select asp-for="Race" class="form-control">
                <option value="0">Select</option>
                <option value="African">African</option>
                <option value="Caucasian">Caucasian</option>
                <option value="Indian">Indian</option>
                <option value="Chinese">Chinese</option>

            </select>
            <span asp-validation-for="Race" class="text-danger"></span>

        </div>

    </div>



    <div class="form-group" col-sm-3" style="display: flex">
        <input class="form-control col-sm-2" value="Marital Status" data-toggle="tooltip" data-placement="left" title="Description of a person's relationship" readonly>
        <div class="col-sm-3">
            <select asp-for="MaritalStatus" class="form-control">
                <option value="0">Select</option>
                <option value="Single">Single</option>
                <option value="Married">Married</option>
                <option value="Divorced">Divorced</option>

            </select>
            <span asp-validation-for="MaritalStatus" class="text-danger"></span>

        </div>

    </div>
    <br />
    <h4>
                         Occupational Details              
                          
                      
                          Education Details
    </h4>

    <div class="form-group " col-sm-3" style="display: flex">

        <input class="form-control col-sm-2" type="text" value="Occupation" data-toggle="tooltip" data-placement="left" title="A job or profession of the employee" readonly>
        <div class="col-sm-3">
            <input asp-for="Occupation" class="form-control" type="text" placeholder="Occupation">
            <span asp-validation-for="Occupation" class="text-danger"></span>

        </div>

        <input class="form-control col-sm-2" type="text" value="Qualification" data-toggle="tooltip" data-placement="left" title="A completed course" readonly>
        <div class="col-sm-3">
            <input asp-for="EducationLevel1" class="form-control" type="text" placeholder="Qualification">
            <span asp-validation-for="EducationLevel1" class="text-danger"></span>

        </div>
    </div>

    <div class="form-group " col-sm-3" style="display: flex">

        <input class="form-control col-sm-2" type="text" value="Department" data-toggle="tooltip" data-placement="left" title="A division of an area of specialisation " readonly>
        <div class="col-sm-3">
            <input asp-for="Department" class="form-control" placeholder="Department">
            <span asp-validation-for="Department" class="text-danger"></span>

        </div>
        <input class="form-control col-sm-2" type="text" value="Qualification" data-toggle="tooltip" data-placement="left" title="A completed course" readonly>

        <div class="col-sm-3">
            <input asp-for="EducationLevel2" class="form-control" placeholder="Qualification">
            <span asp-validation-for="EducationLevel2" class="text-danger"></span>

        </div>
    </div>

    <div class="form-group " col-sm-3" style="display: flex">

        <input class="form-control col-sm-2" type="text" value="Basic Salary" data-toggle="tooltip" data-placement="left" title="Salary paid to the employee each month" readonly>
        <div class="col-sm-3">
            <input asp-for="BasicSalary" class="form-control" type="text" placeholder="BasicSalary">
            <span asp-validation-for="BasicSalary" class="text-danger"></span>

        </div>

        <input class="form-control col-sm-2" type="text" value="Qualification" data-toggle="tooltip" data-placement="left" title="A completed course" readonly>
        <div class="col-sm-3">
            <input asp-for="EducationLevel3" class="form-control" type="text" placeholder="Qualification">
            <span asp-validation-for="EducationLevel3" class="text-danger"></span>

        </div>
    </div>

    <div class="form-group " col-sm-3" style="display: flex">

        <input class="form-control col-sm-2" type="text" value="Annual Income" data-toggle="tooltip" data-placement="left" title="The amount of income in a year" readonly>
        <div class="col-sm-3">
            <input asp-for="AnnualIncome" class="form-control" placeholder="Annual Income">
            <span asp-validation-for="AnnualIncome" class="text-danger"></span>

        </div>
        <input class="form-control col-sm-2" type="text" value="Qualification" data-toggle="tooltip" data-placement="left" title="A completed course" readonly>

        <div class="col-sm-3">
            <input asp-for="EducationLevel4" class="form-control" placeholder="Qualification">
            <span asp-validation-for="EducationLevel4" class="text-danger"></span>

        </div>
    </div>

    <div class="form-group " col-sm-3" style="display: flex">

        <input class="form-control col-sm-2" type="text" id="id1" value="Start Date" data-toggle="tooltip" data-placement="left" title="Date in which employee started or is to start working" readonly>
        <div class="col-sm-3">
            <input asp-for="StartDate" class="form-control" type="date" placeholder="Start Date">
            <span asp-validation-for="StartDate" class="text-danger"></span>

        </div>

    </div>
    <br />
    <div class="form-inline">

        <input type="submit" value="Save" class="btn btn-default" title="Add Emplyee" data-toggle="tooltip" onclick="getIdentityNumber()"/>
        <input type="button" value="Back" class="btn btn-default" onclick="history.go(-1)" />
        <input type="reset" value="Clear" class="btn btn-default" />
        <input type="button" value="Home" class="btn btn-default" onclick="location.href='@Url.Action("Index", "Home")'" />
    </div>

</form>
        </div>
        </div>
        </nav>
    </body>
</html>

@if (ViewBag.Message != null)
{
    <script type="text/javascript">
        window.onload = function () {
          alert ("@ViewBag.Message");
        };

    </script>
}

<script src="https://ajax.aspnetcdn.com/ajax/jquery/jquery-3.3.1.min.js"

        asp-fallback-src="~/lib/jquery/dist/jquery.min.js"

        asp-fallback-test="window.jQuery"

        crossorigin="anonymous"

        integrity="sha384-tsQFqpEReu7ZLhBV2VZlAu7zcOV+rXbYlF2cqB8txI/8aZajjp4Bqd+V6D5IgvKT"></script>

<script type="text/javascript">
    $(document).ready(function (){
      var IdentityNumber = "1234567890123";
        var Id = IdentityNumber.substring(1,10);
    });

</script>
<script type="text/javascript">
    function getIdentityNumber(){
    var identitynumber = document.getElementById("IdentityNumber").value;
var id = identitynumber.substring(0,9);       
        
        document.getElementById("Id").value = id;
        };
</script>


скрипт не работает, но отображает символы guid в mysqlworkbench, когда он должен отображать подстроки.

ZurdoDev

Как мы можем помочь?

1 Ответов

Рейтинг:
2

srko

Используйте приведенные ниже фрагменты соответственно, чтобы получить 10-значный первичный ключ и назначить его вашему полю первичного ключа.

db.SaveChanges() //And use in your code for saving the data.


db.Id = tenDigitSubStringFunction(txtID.Text or your identity number) // txtID is you text box 
//tenDigitSubStringFunction will help perform your substring operation, add the below snippet code in this function.


Или же добавьте сюда свой код, чтобы я мог помочь вам исправить это.

использование JavaScript :
var str = "1234567890";
var res = str.substring(0, 9)

Использование кода C#
string name = "qwertyuiopasdfghjklzxcvbnmjk";
            Console.WriteLine(name.Substring(0, 9));