Académique Documents
Professionnel Documents
Culture Documents
Net 4
ﻣﻌﺮﻓﻲ MVC.NET
MVC.NETﯾﮏ ﺗﮑﻨﻮﻟﻮژی ﺟﺪﯾﺪ ﻣﺎﯾﮑﺮﻭﺳﺎﻓﺖ ﺟﻬﺖ ﺭﺍﻩ ﺍﻧﺪﺍﺯی ﺑﺮﻧﺎﻣﻪ ﻫﺎی ﺗﺤﺖ ﻭﺏ ﻣﯽ ﺑﺎﺷﺪ .ﺯﻣﺎﻥ ﻧﮕﺎﺭﺵ ﺍﯾﻦ ﻣﻘﺎﻟﻪ ﻭﺭژﻥ
٢ﺁﻥ ﻣﻮﺟﻮﺩ ﻣﯽ ﺑﺎﺷﺪ .ﮐﻪ ﺩﻗﻴﻘﺎً ﻫﻤﻴﻦ ﺍﻣﺮﻭﺯ ﻧﺴﺨﻪ ٣ﺁﻥ ﺭﯾﻠﻴﺰ ﺷﺪ.
ASP.NET MVCﭼﺎﺭﭼﻮﺏ ﺟﺪﯾﺪﯾﺴﺖ ﮐﻪ ﺑﺮﺍی ﺑﺮﻧﺎﻣﻪ ﻫﺎی ﮐﺎﺭﺑﺮﺩی ﺗﺤﺖ ﻭﺏ ،ﻧﮕﻬﺪﺍﺷﺖ ﭘﺬﯾﺮی ﻭ ﺁﺯﻣﻮﻥ ﭘﺬﯾﺮی ﺑﺎﻻﯾﯽ ﺭﺍ ﺑﻪ
ﺍﺭﻣﻐﺎﻥ ﺁﻭﺭﺩﻩ ﺍﺳﺖ ﮐﻪ ﺍﯾﻦ ﻣﻬﻢ ﺗﻮﺳﻂ ﺍﻟﮕﻮی Model – View – Controllerﻣﺤﻘﻖ ﻣﯽ ﺷﻮﺩ .ﺍﯾﻦ ﻣﺪﻝ ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﺎﻥ ﺭﺍ
ﺗﺸﻮﯾﻖ ﺑﻪ ﺟﺪﺍ ﺳﺎﺯی ﺳﻴﺴﺘﻤﺎﺗﻴﮏ ﻗﺴﻤﺘﻬﺎی User Interfaceﻭ ﻗﺴﻤﺘﻬﺎی ﻣﺮﺑﻮﻁ ﺑﻪ ﮐﻨﺘﺮﻝ ﺩﺍﺩﻩ ﻫﺎی ﻭﺍﺭﺩ ﺷﺪﻩ ﺗﻮﺳﻂ
ﮐﺎﺭﺑﺮ ﻭ ﻫﻤﭽﻨﻴﻦ ﻗﺴﻤﺘﻬﺎی ﻣﺮﺑﻮﻁ ﺑﻪ ﺍﺭﺗﺒﺎﻁ ﻭ ﺗﺮﺍﮐﻨﺶ ﺑﺎ ﭘﺎﯾﮕﺎﻩ ﺩﺍﺩﻩ ﻣﯽ ﮐﻨﺪ.
ﺍﯾﻦ ﮐﺘﺎﺏ ﺍﺯ ﺩﻭ ﺑﺨﺶ ﺗﺸﮑﻴﻞ ﺷﺪﻩ ﺍﺳﺖ .ﺩﺭ ﺑﺨﺶ ﺍﻭﻝ ﺷﻤﺎ ﺭﺍ ﺑﺎ ﺍﯾﻦ ﺗﮑﺘﻮﻟﻮژی ﺁﺷﻨﺎ ﻣﯽ ﮐﻨﻢ .ﺑﻪ ﻋﻨﻮﺍﻥ ﻣﺜﺎﻝ :ﮐﺎﺭ ﺑﺎ
ﮐﻨﺘﺮﻟﺮ ﻫﺎ ،ﮐﺸﻴﻨﮓ ،ﺍﻋﺘﺒﺎﺭﺳﻨﺞ ﻫﺎ ﻭ . ...ﺩﺭ ﺑﺨﺶ ﺩﻭﻡ ﺍﯾﻦ ﮐﺘﺎﺏ ﺑﺎ ﺗﻮﺟﻪ ﺁﻣﻮﺯﻩ ﻫﺎﯾﯽ ﮐﻪ ﺩﺭ ﺑﺨﺶ ﺍﻭﻝ ﺩﺍﺭﯾﻢ ﺑﻪ ﺭﺍﻩ ﺍﻧﺪﺍﺯی
ﯾﮏ ﺳﺎﯾﺖ ﺑﺎ ﺍﻣﮑﺎﻧﺎﺕ ﻣﺘﻔﺎﻭﺕ ﺍﺯﺟﻤﻠﻪ ﻓﺮﻭﺷﮕﺎﻩ ﺍﻟﮑﺘﺮﻭﻧﻴﮑﯽ ﻣﯽ ﻧﻤﺎﯾﻴﻢ.
ﻫﻤﺎﻧﻄﻮﺭ ﮐﻪ ﺩﺭ ﺻﻔﺤﻪ ٣ﻫﻤﻴﻦ ﮐﺘﺎﺏ ﮔﻔﺘﻢ ﺳﻌﯽ ﻣﯽ ﮐﻨﻢ ﺗﺎ ﮐﺎﺭ ﺭﺍ ﺭﺍﺣﺖ ﮐﻨﻢ ،ﯾﻌﻨﯽ ﺍﮔﺮ ﮐﺴﯽ ﻣﺴﺘﻘﻴﻢ ﺑﻪ ﺑﺨﺶ ﺩﻭﻡ ﺍﯾﻦ
ﮐﺘﺎﺏ ﺑﺮﻭﺩ ﺑﺪﻭﻥ ﻫﻴﭻ ﻣﺸﮑﻠﯽ ﺍﺯ ﺁﻥ ﺳﺮ ﺩﺭ ﺑﻴﺎﻭﺭﺩ ﻭ ...
ﺑﻪ ﻋﻨﻮﺍﻥ ﺑﺮﺍﺩﺭ ﮐﻮﭼﮑﺘﺮ ﺷﻤﺎ ﺍﺯ ﺷﻤﺎ ﺧﻮﺍﻫﺶ ﻣﯽ ﮐﻨﻢ ﺍﮔﺮ ﻭﺍﻗﻌﺎً ﻋﻼﻓﻪ ﻣﻨﺪﯾﺪ ﺗﺎ ﯾﮏ ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺲ ﺣﺮﻓﻪ ﺍی ﺑﺸﻮﯾﺪ ﺍﻭﻝ ﺑﺮﻭﯾﺪ
ﻭ ﺍﻟﻔﺒﺎی ﺁﻥ ﺭﺍ ﯾﺎﺩ ﺑﮕﻴﺮﯾﺪ...
ﺷﻤﺎ ﺑﺮﺍی ﺍﯾﻨﮑﻪ ﺍﯾﻦ ﮐﺘﺎﺏ ﺭﺍ ﺑﻬﺘﺮ ﺩﺭک ﮐﻨﻴﺪ ﻣﯽ ﺑﺎﯾﺴﺖ ﺑﺎ ﻣﺒﺎﺣﺚ ﺯﯾﺮ ﺁﺷﻨﺎﯾﯽ ﺩﺍﺷﺘﻪ ﺑﺎﺷﻴﺪ:
ﺍﻟﺒﺘﻪ ﺗﻤﺎﻣﯽ ﻣﺒﺎﺣﺚ ﺭﺍ ﺗﺎ ﺣﺪﻭﺩی ﮐﻪ ﻻﺯﻡ ﺑﺎﺷﺪ ﺩﺭ ﻣﻘﻄﻊ ﻣﻨﺎﺳﺐ ﺩﺭ ﺍﯾﻦ ﮐﺘﺎﺏ ﺗﻮﺿﻴﺢ ﻣﯽ ﺩﻫﻢ .ﻫﻤﭽﻨﻴﻦ ﺑﻨﺪﻩ ﺑﺎ C#ﮐﺎﺭ
ﻣﯽ ﮐﻨﻢ ﻭﻟﯽ ﺩﺭ ﻧﻬﺎﯾﺖ ) ﺁﺧﺮ ﭘﺮﻭژﻩ ( ﮐﺪﻫﺎی VB.netﺭﺍ ﻫﻢ ﺍﻧﺘﺸﺎﺭ ﻣﯽ ﺩﻫﻢ.
ﻧﻴﺎﺯﻣﻨﺪﻩ ﻫﺎ
U
ﻫﻤﺎﻧﻄﻮﺭ ﮐﻪ ﻫﻤﻪ ﺷﻤﺎ ﻋﺰﯾﺰﺍﻥ ﻣﯽ ﺩﺍﻧﻴﺪ ﺑﺮﺍی ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ MVC.NETﺑﻪ ﯾﮑﺴﺮی ﺍﺑﺰﺍﺭ ﻧﻴﺎﺯ ﺩﺍﺭﯾﻢ ﮐﻪ ﻋﺒﺎﺭﺗﻨﺪ ﺍﺯ:
ﻓﺼﻞ ﺍﻭﻝ
* ﺁﺷﻨﺎﯾﯽ ﺑﺎ ﺩﺍﺕ ﻧﺖ
* ﺁﺷﻨﺎﯾﯽ ﺑﺎ MVC
* ﻣﻌﻤﺎﺭی MVC
* ﻭ ...
ﺑﺨﺶ ﺍﻭﻝ
ﻭﺭﻭﺩ ﺑﻪ MVC.NET
FaEdu.irﮔﺮﻭﻩ ﺁﻣﻮﺯﺵ ﻓﺎﺭﺳﻲ ﺁﻣﻮﺯﺵ ﺑﻪ ﻫﻤﺮﺍﻩ ﭘﺮﻭژﻩ MVC.Net 6
ﺩﺭ ﺍﯾﻦ ﻓﺼﻞ ﻣﯽ ﺧﻮﺍﻫﻢ ﺷﻤﺎ ﺭﺍ ﺑﺮﺍی ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ MVCﺁﻣﺎﺩﻩ ﮐﻨﻢ ﻫﻤﭽﻨﻴﻦ ﯾﮏ ﭘﻴﺶ ﻧﻤﺎﯾﺸﯽ ﺍﺯ asp.net mvcﺑﻪ ﺷﻤﺎ
ﻣﻴﺪﻫﻢ .ﻫﺪﻑ ﺍﺯ ﺍﯾﻦ ﺑﺨﺶ ﻃﺮﺡ ﺭﯾﺰی ﻧﻘﺸﻪ ﺭﺍﻩ ﻭ ﺁﻣﺎﺩﻩ ﺳﺎﺯی ﺷﻤﺎ ﺍﺳﺖ .ﻫﻤﭽﻨﻴﻦ ﺷﻤﺎ ﺭﺍ ﺑﺎ ﺗﮑﻨﻮﻟﻮژی ﺩﺍﺕ ﻧﺖ ﻓﺮﯾﻢ
ﻭﺭک ﺁﺷﻨﺎ ﻣﯽ ﮐﻨﻢ .ﺗﮑﻨﻮﻟﻮژی ﮐﻪ ) ﺍﻟﺒﺘﻪ ﺍﺯ ﺩﯾﺪ ﺑﻨﺪﻩ ( ﺗﻤﺎﻣﯽ ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﺎﻥ ﺭﺍ ﻣﺪﯾﻮﻥ ﺑﻴﻞ ﮔﻴﺘﺲ ﻣﺤﺘﺮﻡ ﻭ ﺷﺮﮐﺖ ﺑﺰﺭﮔﺶ
ﻣﺎﯾﮑﺮﻭﺳﺎﻓﺖ ﻣﯽ ﮐﻨﺪ.
ﺍﺯ ﻧﻤﺎﯾﺸﯽ ﺩﺭ ﻧﻬﺎﯾﺖ ﺩﺭ ﻣﻮﺭﺩ ﻣﻌﻤﺎﺭی ASP.Net MVCﺑﻪ ﺑﺤﺚ ﻣﯽ ﭘﺮﺩﺍﺯﯾﻢ .ﻫﻤﭽﻨﻴﻦ ﺷﻤﺎ ﺭﺍ ﺁﻣﺎﺩﻩ ﮐﻨﻢ ﺑﺮﺍی ﭘﻴﺶ
ﻗﺴﻤﺖ ﻫﺎی ﻣﺨﺘﻠﻒ MVC Applicationﮐﻪ ﺷﺎﻣﻞ ﻣﺪﻝ ،ﻧﻤﺎﯾﺸﮕﺮ ﻭ ﮐﻨﺘﺮﻟﺮ .ﻭ ﺑﺎ ﯾﮑﺪﯾﮕﺮ ﺑﻪ ﺳﺎﺧﺖ ﺍﻭﻟﻴﻦ ﭘﺮﻭژﻩ ﺩﺭ MVCﻭ
ﺑﺮﺭﺳﯽ ﮐﺪﻫﺎی ﺁﻥ ﻣﯽ ﭘﺮﺩﺍﺯﯾﻢ.
ﺍﯾﻦ ﻗﺴﻤﺖ ﺭﺍ ﭼﻮﻥ ﻫﻤﻪ ﺷﻤﺎ ﻋﺰﯾﺰﺍﻥ ﺍﺳﺘﺎﺩ ﻫﺴﺘﻴﺪ ﻣﯽ ﮔﺬﺍﺭﻡ ﺑﺮﺍی ﯾﮏ ﻓﺮﺻﺖ ﺩﯾﮕﺮ
ﺍﯾﻦ ﻗﺴﻤﺖ ﺭﺍ ﭼﻮﻥ ﻫﻤﻪ ﺷﻤﺎ ﻋﺰﯾﺰﺍﻥ ﺍﺳﺘﺎﺩ ﻫﺴﺘﻴﺪ ﻣﯽ ﮔﺬﺍﺭﻡ ﺑﺮﺍی ﯾﮏ ﻓﺮﺻﺖ ﺩﯾﮕﺮ
ﺷﯽ ﯾﺎ ﺁﺑﺠﮑﺖ ﻫﺎ ﻭ ﭘﻴﺎﺩﻩ ﺳﺎﺯی ﻣﻨﻄﻖ ﺑﺮﻧﺎﻣﻪ ﺑﺮﺍی ﺩﺍﺩﻩ ﻫﺎی ﺩﺍﻣﻨﻪ ی ﻣﺴﺌﻠﻪ ﺍﺳﺖ .ﺩﺭ ﺣﻘﻴﻘﺖ ﺑﺎﺭ ﺍﺻﻠﯽ ﻣﻌﻤﺎﺭی MVC
ﺑﺮ ﻋﻬﺪﻩ ی ﺍﯾﻦ ﺑﺨﺶ ﺍﺳﺖ .ﻣﺜﻼً ﯾﮏ ﺁﺑﺠﮑﺖ Productﻣﻤﮑﻦ ﺍﺳﺖ ﺍﻃﻼﻋﺎﺕ ﺭﺍ ﺍﺯ ﺑﺎﻧﮏ ﺍﻃﻼﻋﺎﺗﯽ ﺑﺎﺯﯾﺎﺑﯽ ﮐﺮﺩﻩ ،ﺑﺮ ﺭﻭی ﺁﻧﻬﺎ
ﻋﻤﻠﻴﺎﺗﯽ ﺭﺍ ﺍﻧﺠﺎﻡ ﺩﻫﺪ ﻭ ﺳﺮﺍﻧﺠﺎﻡ ﻧﺘﻴﺠﻪ ﺭﺍ ﺩﺭ ﺑﺎﻧﮏ ﺍﻃﻼﻋﺎﺗﯽ ﺉ ﺩﺭ ﺟﺪﻭﻝ Productsﺫﺧﻴﺮﻩ ﮐﻨﺪ.
)view -٢ﻧﻤﺎﯾﺸﮕﺮ( :ﺍﺟﺰﺍﯾﯽ ﺍﺯ ﺑﺮﻧﺎﻣﻪ ﺍﺳﺖ ﮐﻪ ﻭﺍﺳﻂ ﮐﺎﺭﺑﺮی ﺑﺮﻧﺎﻣﻪ ) (UIﺭﺍ ﻣﯽ ﺳﺎﺯﺩ .ﻣﻌﻤﻮﻻً ﺍﯾﻦ UIﺍﺯ ﺩﺍﺩﻩ ﻫﺎی ﻣﺪﻝ
U U
ﺳﺎﺧﺘﻪ ﻣﯽ ﺷﻮﺩ .ﺩﺭ ﻭﺍﻗﻊ ﻧﻘﻄﻪ ﭘﺎﯾﺎﻥ ﺑﺮﻧﺎﻣﻪ ﮐﺎﺭﺑﺮﺩی ﺍﺳﺖ .ﺑﻪ ﮐﺎﺭﺑﺮ ﻧﺘﺎﯾﺞ ﻋﻤﻠﻴﺎﺕ ﻭ ﺑﺎﺯﯾﺎﺑﯽ ﻭ ﻧﻤﺎﯾﺶ ﺩﺍﺩﻩ ﺍﺯ ﻃﺮﯾﻖ
ﺑﺮﻗﺮﺍﺭی ﺍﺭﺗﺒﺎﻁ ﺑﺎ ﺩﻭ ﺑﺨﺶ ﺩﯾﮕﺮ؛ ﯾﻌﻨﯽ ﻣﺪﻝ ﻭ ﮐﻨﺘﺮﻟﮕﺮ ﺭﺍ ﻧﺸﺎﻥ ﻣﯽ ﺩﻫﺪ.ﺑﺮﺍی ﻣﺜﺎﻝ ،ﻫﻨﮕﺎﻣﯽ ﮐﻪ ﮐﺎﺭﺑﺮ ﺩﺭ ﻓﺮﻡ ﻭﺭﻭﺩ ﺑﻪ
ﺳﻴﺴﺘﻢ ﺭﻣﺰ ﻋﺒﻮﺭ ﺧﻮﺩ ﺭﺍ ﻭﺍﺭﺩ ﻣﯽ ﮐﻨﺪ ،ﺍﮐﺜﺮ ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﺎﻥ ﺩﺭ ﻫﻤﺎﻥ ﻓﺮﻡ ﺍﻗﺪﺍﻡ ﺑﻪ ﭼﮏ ﮐﺮﺩﻥ ﺭﻣﺰ ﻋﺒﻮﺭ ﻣﯽ ﮐﻨﻨﺪ ﮐﻪ ﺍﯾﻦ
FaEdu.irﮔﺮﻭﻩ ﺁﻣﻮﺯﺵ ﻓﺎﺭﺳﻲ ﺁﻣﻮﺯﺵ ﺑﻪ ﻫﻤﺮﺍﻩ ﭘﺮﻭژﻩ MVC.Net 7
ﻋﻤﻞ ﻣﻐﺎﯾﺮ ﺑﺎ ﻗﻮﺍﻧﻴﻦ MVCﺍﺳﺖ .ﺩﺭ MVCﻫﻨﮕﺎﻣﯽ ﮐﻪ ﮐﺎﺭﺑﺮ ﺭﻣﺰ ﻋﺒﻮﺭ ﺭﺍ ﮐﺮﺩ ،ﺭﻣﺰ ﻋﺒﻮﺭ ﺑﺪﻭﻥ ﻫﻴﭽﮕﻮﻧﻪ ﺍﻋﻤﺎﻟﯽ ﺑﻪ ﺑﺨﺶ
ﻫﺎی ﺩﯾﮕﺮ ﻓﺮﺳﺘﺎﺩﻩ ﻣﯽ ﺷﻮﺩ ﻭ ﻓﻘﻂ ﯾﮏ ﻧﺘﻴﺠﻪ ﺳﺎﺩﻩ ﯾﺎ ﺧﺒﺮ ﺍﺯ ﺑﺨﺶ ﻫﺎی ﺩﯾﮕﺮ ﺩﺭﯾﺎﻓﺖ ﻣﯽ ﮐﻨﺪ ﮐﻪ ﺍﺯ ﻃﺮﯾﻖ ﺁﻥ ﺍﺟﺎﺯﻩ ی
ﻭﺭﻭﺩ ﺑﻪ ﺑﺮﻧﺎﻣﻪ ﺩﺍﺩﻩ ﻣﯽ ﺷﻮﺩ.
)Controller -٣ﮐﻨﺘﺮﻟﮕﺮ( :ﺍﺟﺰﺍﯾﯽ ﺍﺯ ﺑﺮﻧﺎﻣﻪ ﻫﺴﺘﻨﺪ ﮐﻪ ﻣﺪﯾﺮﯾﺖ ﺗﻌﺎﻣﻞ ﺑﺎ ﮐﺎﺭﺑﺮ ﺭﺍ ﺑﺮ ﻋﻬﺪﻩ ﺩﺍﺭﻧﺪ .ﻣﯽ ﺗﻮﺍﻥ ﮔﻔﺖ ﮐﻪ ﻭﺍﺳﻂ
U U
ﺑﻴﻦ ﻣﺪﻝ ﻭ ﻧﻤﺎﯾﺸﮕﺮ ﻣﯽ ﺑﺎﺷﻨﺪ؛ ﯾﻌﻨﯽ ﺑﺎ ﻣﺪﻝ ﮐﺎﺭ ﻣﯽ ﮐﻨﺪ ﻭ ﺩﺭ ﺍﻧﺘﻬﺎ ﻧﻤﺎﯾﺸﮕﺮی ﺭﺍ ﺑﺮﺍی ﻧﺸﺎﻥ ﺩﺍﺩﻥ ﻭﺍﺳﻂ ﮐﺎﺭﺑﺮی ﺍﻧﺘﺨﺎﺏ
ﻣﯽ ﮐﻨﺪ .ﻭﺭﻭﺩی ﮐﺎﺭﺑﺮ ﺭﺍ ﻣﺪﯾﺮﯾﺖ ﮐﺮﺩﻩ ﻭ ﺑﻪ ﺁﻧﻬﺎ ﭘﺎﺳﺦ ﻣﯽ ﺩﻫﺪ ﻭ ﺑﺎ ﮐﺎﺭﺑﺮ ﺗﻌﺎﻣﻞ ﻣﯽ ﮐﻨﺪ .ﺑﺮﺍی ﻣﺜﺎﻝ ،ﮐﻨﺘﺮﻟﮕﺮ ﻋﺒﺎﺭﺕ ﻫﺎی
ﭘﺮﺱ ﻭ ﺟﻮی ﺑﺎﻧﮏ ﺍﻃﻼﻋﺎﺗﯽ ﺭﺍ ﻣﺪﯾﺮﯾﺖ ﮐﺮﺩﻩ ﻭ ﺁﻥ ﻫﺎ ﺭﺍ ﺑﻪ ﻣﺪﻝ ﺍﺭﺳﺎﻝ ﻣﯽ ﮐﻨﺪ ،ﻭﻇﻴﻔﻪ ﺍﺟﺮﺍی ﭘﺮﺱ ﻭ ﺟﻮﻫﺎ ﺑﺎ ﻣﺪﻝ ﺍﺳﺖ.
MODEL
2
3
1
Controller USER
4
5
VIEW
ﻧﻤﺎﯾﺪ ﻭ ﯾﺎ ﯾﮏ ﻟﻴﻨﮏ ﺭﺍ ﺩﺭ ﯾﮏ ﺻﻔﺤﻪ ﮐﻠﻴﮏ ﻣﯽ ﻧﻤﺎﯾﺪ .ﺍﯾﻦ ﻧﻘﻄﻪ ﺷﺮﻭﻉ ﺩﺭﺧﻮﺍﺳﺖ ﺍﺳﺖ.
- ٢ﺩﺭﺧﻮﺍﺳﺖ ﺑﻪ ﮐﻨﺘﺮﻝ ﮔﺮ ﻓﺮﺳﺘﺎﺩﻩ ﻣﯽ ﺷﻮﺩ ﻭ ﺁﻥ ﺭﺍ ﺍﻋﺘﺒﺎﺭ ﺳﻨﺠﯽ ﻣﯽ ﻧﻤﺎﯾﺪ ﻭ ﺍﺟﺮﺍی ﺩﺭﺧﻮﺍﺳﺖ ﺭﺍ ﺩﺭ ﻣﺪﻝ ﺍﻟﺰﺍﻣﯽ
ﻣﯽ ﮐﻨﺪ
- ٣ﻣﺪﻝ ﺑﻪ ﺑﺎﻧﮏ ﺍﻃﻼﻋﺎﺗﯽ ﺭﺟﻮﻉ ﮐﺮﺩﻩ ﻭ ﺩﺍﺩﻩ ﻫﺎی ﺑﺎﺯﯾﺎﺑﯽ ﺷﺪﻩ ﺭﺍ ﺑﻪ ﮐﻨﺘﺮﻝ ﮔﺮ ﻣﯽ ﻓﺮﺳﺘﺪ.
- ۴ﮐﻨﺘﺮﻝ ﮔﺮ ﺩﺍﺩﻩ ﻫﺎ ﺭﺍ ﻓﺮﻣﺖ ﮐﺮﺩﻩ ﻭ ﺑﻪ ﻧﻤﺎﯾﺸﮕﺮ ﻣﻴﻔﺮﺳﺘﺪ ) .ﺍﻟﺒﺘﻪ ﻣﻨﻈﻮﺭ ﺍﺯ ﻧﻤﺎﯾﺸﮕﺮ ﺩﺭ ﺍﯾﻨﺠﺎ ﻣﺎﻧﻴﺘﻮﺭ ﻧﻴﺴﺖ !!!(
- ۵ﺩﺭ ﻣﺮﺣﻠﻪ ﺁﺧﺮ ﻧﻤﺎﯾﺸﮕﺮ ﺩﺍﺩﻩ ﻫﺎی ﻣﻮﺭﺩ ﻧﻴﺎﺯ ﺭﺍ ﺩﺭﯾﺎﻓﺖ ﮐﺮﺩﻩ ﻭ ﺟﻮﺍﺏ ﺭﺍ ﺑﻪ ﮐﺎﺭﺑﺮ ﺑﺎﺯ ﻣﯽ ﮔﺮﺩﺍﻧﺪ ) ﺩﺭ ﺍﯾﻨﺠﺎ ﺩﺭ ﻣﺎﻧﻴﺘﻮﺭ
ﮐﺎﺭﺑﺮ ﻧﻤﺎﯾﺶ ﺩﺍﺩﻩ ﻣﯽ ﺷﻮﺩ (
FaEdu.irﮔﺮﻭﻩ ﺁﻣﻮﺯﺵ ﻓﺎﺭﺳﻲ ﺁﻣﻮﺯﺵ ﺑﻪ ﻫﻤﺮﺍﻩ ﭘﺮﻭژﻩ MVC.Net 8
ﺷﻤﺎ ﺑﺎﯾﺪ ﺩﺭ ﻫﻨﮕﺎﻡ ﺍﻧﺘﺨﺎﺏ ASP.NETﻭ ASP.NET MVCﺑﺮﺍی ﺳﺎﺧﺖ ﺑﺮﻧﺎﻣﻪ ﻫﺎی ﻭﺑﯽ ﺑﺴﻴﺎﺭ ﺩﻗﺖ ﮐﻨﻴﺪ MVC .ﺟﺎﯾﮕﺰﯾﻨﯽ
ﺑﺮﺍی ﻓﺮﻡ ﻫﺎی ﻭﺏ ASP.NETﻧﻴﺴﺖ ﻭ ﺷﻤﺎ ﻣﯽ ﺗﻮﺍﻧﻴﺪ ﺍﺯ ﻫﺮ ﮐﺪﺍﻡ ﺍﺯ ﺁﻧﻬﺎ ﺑﺮﺍی ﺳﺎﺧﺖ ﺑﺮﻧﺎﻣﻪ ﻫﺎی ﻭﺑﯽ ﺍﺳﺘﻔﺎﺩﻩ ﮐﻨﻴﺪ .ﺍﮔﺮ
ﺷﻤﺎ ﯾﮏ ﺑﺮﻧﺎﻣﻪ ﻭﺑﯽ ﺑﺮ ﻣﺒﻨﺎی ﻓﺮﻡ ﻫﺎی ﻭﺏ ﺩﺍﺭﯾﺪ ،ﻣﯽ ﺗﻮﺍﻧﻴﺪ ﻫﻤﭽﻨﺎﻥ ﺁﻥ ﺭﺍ ﺑﻪ ﻫﻤﺎﻥ ﺷﻴﻮﻩ ی ﺳﺎﺑﻖ ﺍﺩﺍﻣﻪ ﺩﻫﻴﺪ.
ﭘﺸﺘﻴﺒﺎﻧﯽ ﺍﺯ ﻭﯾﮋﮐﯽ ﻫﺎی ﻣﻮﺟﻮﺩ ASP.NET : ASP.NET MVCﺑﻪ ﻣﺎ ﺍﯾﻦ ﺍﻣﮑﺎﻥ ﺭﺍ ﻣﯽ ﺩﻫﺪ ﺗﺎ ﺍﺯ ﻭﯾﮋﮔﯽ ﻫﺎﯾﯽ •
ﻣﺎﻧﻨﺪ ﻣﺠﻮﺯ ﻓﺮﻡ ﻭ ﺗﺸﺨﻴﺺ ﻫﻮﯾﺖ ﻭﯾﻨﺪﻭﺯ ،ﻣﺠﻮﺯ ﺁﺩﺭﺱ ﻫﺎ ،ﻋﻀﻮﯾﺖ ﻭ ﻧﻘﺶ ﻫﺎ ،ﺧﺮﻭﺟﯽ ﻭ ﮐﺶ ﮐﺮﺩﻥ ﺩﺍﺩﻩ ﻫﺎ ﻭ
Sessionﻭ ﻣﺪﯾﺮﯾﺖ ﻭﺿﻌﻴﺖ ﭘﺮﻭﻓﺎﯾﻞ ،ﻣﺎﻧﻴﺘﻮﺭ ﮐﺮﺩﻥ ﺻﺤﻴﺢ ،ﺳﻴﺴﺘﻢ ﭘﻴﮑﺮ ﺑﻨﺪی ﻭ ﻣﻌﻤﺎﺭی ﻋﺮﺿﻪ ﮐﻨﻨﺪﻩ ﺍﺳﺘﻔﺎﺩﻩ
ﮐﻨﻴﺪ.
ﺣﺎﻝ ﮐﻪ ﺑﺎ ﻣﻔﺎﻫﻴﻢ ﭘﺎﯾﻪ ﺍی ﻓﺮﯾﻢ ﻭﺭک ﺩﺍﺕ ﻧﺖ ﻭ ﻫﻤﭽﻨﻴﻦ MVCﺁﺷﻨﺎ ﺷﺪﯾﺪ ،ﯾﮏ ﭘﺮﻭژﻩ ﺳﺎﺩﻩ ﺭﺍ ﺷﺮﻭﻉ ﺑﻪ ﻧﻮﺷﺘﻦ ﻣﯽ ﻧﻤﺎﯾﻴﻢ.
ﭘﺮﻭژﻩ :1
- ١ﻭﯾﮋﻭﺍﻝ ﺍﺳﺘﻮﺩﯾﻮ ﺭﺍ ﺑﺎﺯ ﮐﻨﻴﺪ
- ٢ﺍﺯ ﻣﻨﻮی ﻓﺎﯾﻞ ﮔﺰﯾﻨﻪ New Projectﺭﺍ ﺍﻧﺘﺨﺎﺏ ﻧﻤﺎﯾﻴﺪ.
- ٣ﺍﺯ ﭘﻨﺠﺮﻩ ﻣﺤﺎﻭﺭﻩ ﺍی NEW Projectﺩﺭ ﻓﺴﻤﺖ ﭼﭗ Visual C#>WEBﺭﺍ ﺍﻧﺨﺎﺏ ﻭ ﺍﺯ ﻗﺴﻤﺖ ﺳﻤﺖ ﺭﺍﺳﺖ ﮔﺰﯾﻨﻪ
ASP.NET MVC Web Applicationﺭﺍ ﺍﻧﺘﺨﺎﺏ ﻧﻤﺎﯾﻴﺪ .ﺩﺭ ﻗﺴﻤﺖ ﭘﺎﯾﻴﻦ ﻧﺎﻣﯽ ﺭﺍ ﺑﺮﺍی ﭘﺮﻭژﻩ ﺧﻮﺩ ﺑﺮﮔﺰﯾﻨﻴﺪ ).ﻣﺎﻧﻨﺪ ﺷﮑﻞ
ﺯﯾﺮ(
FaEdu.irﮔﺮﻭﻩ ﺁﻣﻮﺯﺵ ﻓﺎﺭﺳﻲ ﺁﻣﻮﺯﺵ ﺑﻪ ﻫﻤﺮﺍﻩ ﭘﺮﻭژﻩ MVC.Net 10
- ۴ﭘﺲ ﺍﺯ ﺍﯾﻨﮑﻪ ﺑﺮ ﺭﻭی ﮔﺰﯾﻨﻪ OKﮐﻠﻴﮏ ﻣﯽ ﻧﻤﺎﯾﻴﺪ ،ﭘﻨﺠﺮﻩ ﺍی ﻣﻄﺎﺑﻖ ﺷﮑﻞ ﺯﯾﺮ ﻧﻤﺎﯾﺶ ﺩﺍﺩﻩ ﻣﯽ ﺷﻮﺩ .ﺩﺭﺑﺎﺭﻩ ﺍﯾﻦ
( ﻣﻔﺼﻞ ﺗﻮﺿﻴﺢ ﻣﯽ ﺩﻫﻢ .ﺗﻨﻈﻴﻤﺎﺕ ﭘﻴﺶ ﻓﺮﺽ ﺭﺍ ﻗﺒﻮﻝ ﮐﺮﺩﻩ ﻭ ﻗﺴﻤﺖ ﺩﺭ ﻓﺼﻞ ﻫﺎی ﺁﯾﻨﺪﻩ )ﺑﺨﺶ ﺷﻤﺎﺭﻩ
ﺍﺩﺍﻣﻪ ﺩﻫﻴﺪ.
- ۵ﭘﺲ ﺍﺯ ﭼﻨﺪ ﺛﺎﻧﻴﻪ ﮐﻪ ﻭﯾﮋﻭﺍﻝ ﺍﺳﺘﻮﺩﯾﻮ ﻣﺸﻐﻮﻝ ﺑﻪ ﻓﻌﺎﻟﻴﺖ ﺷﺪ ،ﺩﺭ ﭘﻨﺠﺮﻩ Solution Explorerﻓﺎﯾﻞ ﻫﺎ ﻭ ﻓﻮﻟﺪﺭﻫﺎﯾﯽ ﺭﺍ
ﺑﻪ ﺻﻮﺭﺕ ﭘﻴﺶ ﻓﺮﺽ ﺑﺮﺍی ﺷﻤﺎ ﻭ ﭘﺮﻭژﻩ ﺷﻤﺎ ﺳﺎﺧﺘﻪ ﺍﺳﺖ
FaEdu.irﮔﺮﻭﻩ ﺁﻣﻮﺯﺵ ﻓﺎﺭﺳﻲ ﺁﻣﻮﺯﺵ ﺑﻪ ﻫﻤﺮﺍﻩ ﭘﺮﻭژﻩ MVC.Net 11
ﻭﯾﮋﻭﺍﻝ ﺍﺳﺘﻮﺩﯾﻮ ﺑﻪ ﺻﻮﺭﺕ ﭘﻴﺶ ﻓﺮﺽ ﻓﺎﯾﻞ ﻭ ﻓﻮﻟﺪﺭﻫﺎی ﺍﺳﺘﺎﻧﺪﺍﺭﺩی ﺭﺍ ﺑﻪ ﭘﺮﻭژﻩ ﺷﻤﺎ ﺍﺿﺎﻓﻪ ﻣﯽ ﻧﻤﺎﯾﺪ ﺗﺎ ﻫﻢ ﮐﺎﺭ ﺷﻤﺎ ﺁﺳﺎﻥ
ﺷﻮﺩ ﺗﺎ ﻫﻢ ﺍﺯ ﯾﮏ ﺍﺳﺘﺎﻧﺪﺍﺭﺩ ﺧﺎﺹ ﻭ ) ﺗﻘﺮﯾﺒﺎً( ﻣﻮﺭﺩ ﺗﺎﯾﻴﺪ ﺧﻮﺩ ﻣﺎﯾﮑﺮﻭﺳﺎﻓﺖ ﭘﻴﺮﻭی ﻧﻤﺎﯾﻴﺪ .ﺍﯾﻦ ﻓﻮﻟﺪﺭﻫﺎ ﺷﺎﻣﻞ:
:Contentﺷﺎﻣﻞ ﻓﺎﯾﻞ ﻫﺎی ﻣﺤﺘﻮﺍﯾﯽ ﺍﺳﺘﺎﺗﻴﮏ ﻣﺎﻧﻨﺪ ﻋﮑﺲ ﻫﺎ ﻭ ﻓﺎﯾﻞ ﻫﺎی CSSﻣﯽ ﺷﻮﺩ
ﻭﻗﺘﯽ ﺷﻤﺎ ﯾﮏ ﭘﺮﻭژﻩ Asp.Net MVCﻣﯽ ﺳﺎﺯﯾﺪ ﺣﺘﻤﺎً ﺑﺎﯾﺪ ) ﺍﻟﺒﺘﻪ ﺍﺟﺒﺎﺭی ﻧﻴﺴﺖ ﺑﺮﺍی ﺭﺍﺣﺘﯽ ﻭ ﺍﺳﺘﺎﻧﺪﺍﺭﺩ ﮐﺎﺭﯾﺴﺖ ( ﻓﺎﯾﻞ
ﻫﺎی Controllerﺭﺍ ﺩﺭﻭﻥ ﻓﻮﻟﺪﺭ ﺧﻮﺩ ﺫﺧﻴﺮﻩ ﻧﻤﺎﯾﻴﺪ ،ﺍﺳﮑﺮﯾﭙﺖ ﻫﺎ ﺭﺍ ﺩﺭ ﻓﻮﻟﺪﺭ Scriptsﻭ ...
ﺣﺎﻝ ﺑﺮﺍی ﺭﺍﻩ ﺍﻧﺪﺍﺯی ﭘﺮﻭژﻩ ﻣﯽ ﺑﺎﯾﺴﺖ ﺍﺯ ﯾﮑﯽ ﺍﺯ ﺩﻭ ﻃﺮﯾﻖ ﺯﯾﺮ ﻋﻤﻞ ﻧﻤﺎﯾﻴﺪ:
ﭼﻨﺎﻧﭽﻪ ﺑﺮﺍی ﺑﺎﺭ ﺍﻭﻝ ﯾﮏ ﭘﺮﻭژﻩ ﺭﺍ ﺍﺟﺮﺍ ﻣﯽ ﻧﻤﺎﯾﻴﺪ ﯾﮏ ﭘﻨﺠﺮﻩ ﺍی ﺑﺮﺍی ﺷﻤﺎ ﺑﺎﺯ ﻣﯽ ﺷﻮﺩ ﻭ ﺍﺯ ﺷﻤﺎ ﻣﻴﺨﻮﺍﻫﺪ ﮐﻪ ﺁﯾﺎ ﻣﻮﺍﻓﻘﻴﺪ
ﺩﯾﺒﺎﮔﻴﻨﮓ ﺑﻪ ﺻﻮﺭﺕ ﺍﺗﻮﻣﺎﺗﻴﮏ ﻓﻌﺎﻝ ﺷﻮﺩ ﻭ ﺑﻬﺘﺮ ﺍﺳﺖ ﺷﻤﺎ ﮔﺰﯾﻨﻪ OKﺭﺍ ﮐﻠﻴﮏ ﻧﻤﺎﯾﻴﺪ .ﺑﻌﺪ ﺍﺯ ﺍﯾﻨﮑﻪ ﺷﻤﺎ ﭘﺮﻭژﻩ ﺭﺍ ﺍﺟﺮﺍ ﮐﺮﺩﯾﺪ
ﭘﻨﺠﺮﻩ ﻣﺮﻭﺭﮔﺮ ﺑﺎﺯ ﺷﺪﻩ ﻭ ﭘﺮﻭژﻩ ﺷﻤﺎ ﺭﺍ ﻧﺸﺎﻥ ﻣﯽ ﺩﻫﺪ ) ﻣﻄﺎﺑﻖ ﺷﮑﻞ (
FaEdu.irﮔﺮﻭﻩ ﺁﻣﻮﺯﺵ ﻓﺎﺭﺳﻲ ﺁﻣﻮﺯﺵ ﺑﻪ ﻫﻤﺮﺍﻩ ﭘﺮﻭژﻩ MVC.Net 12
ﺍﯾﻦ ﺳﺎﺩﻩ ﺗﺮﯾﻦ ﻧﻮﻉ ﭘﺮﻭژﻩ ﺩﺭ ASP.Net MVCﻣﻴﺒﺎﺷﺪ ﮐﻪ ﺷﻤﺎﻝ ﻫﻴﭻ ﭼﻴﺰ ﻧﻤﯽ ﺷﻮﺩ ) ﺍﺯ ﺟﻤﻠﻪ ﻻﯾﻪ ﻫﺎی ﻣﺨﺘﻠﻒ ﻣﻌﻤﺎﺭی
ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ،ﻻﯾﻪ ﺑﺎﻧﮏ ﺍﻃﻼﻋﺎﺗﯽ ،ﻻﯾﻪ ﮐﺎﺭﺑﺮی( ... ،
ﺍﯾﻦ ﺻﻔﺤﻪ ﺗﻨﻬﺎ ﺷﺎﻣﻞ ﯾﮏ ﮐﻨﺘﺮﻟﺮ ASP.Net MVCﻭ ﺩﻭ ﻧﻤﺎﯾﺸﮕﺮ ASP.Net MVCﻣﯽ ﺑﺎﺷﺪ.
C# CODE
…\Controllers\HomeControllers.cs
VB CODE
…\Controllers\HomeControllers.vb
ﺍﮔﺮ ﺷﻤﺎ ﺍﺯ ﺁﺩﺭﺱ ﺑﺎﻻ ﺻﻔﺤﻪ ﻣﻮﺭﺩ ﻧﻈﺮ ﺑﺎﺯ ﻧﻤﺎﯾﻴﺪ ﮐﺪﻫﺎی ﺯﯾﺮ ﺭﺍ ﻣﺸﺎﻫﺪﻩ ﻣﯽ ﻧﻤﺎﯾﻴﺪ:
C# CODE
using ;System
using ;System.Collections.Generic
using ;System.Linq
using ;System.Web
using ;System.Web.Mvc
namespace MyFirstMvcApp.Controllers
{
][HandleError
public class HomeController : Controller
{
)(public ActionResult Index
{
;"!ViewData["Message"] = "Welcome to ASP.NET MVC
;)(return View
}
ﺍﯾﻦ ﺻﻔﺤﻪ ﮐﺪ ﺷﺎﻣﻞ ﯾﮏ ﮐﻼﺱ ﻭ ﺩﻭ ﻣﺘﺪ ﺑﺎ ﻧﺎﻡ ﻫﺎی )( Indexﻭ )( Aboutﻣﯽ ﺷﻮﺩ .ﻫﺮ ﺩﻭ ﻣﺘﺪ ﺑﺮﺍی ﺑﺮﮔﺮﺩﺍﻧﺪﻥ ﻧﻤﺎﯾﺸﮕﺮ
ﺍﺳﺘﻔﺎﺩﻩ ﻣﯽ ﺷﻮﻧﺪ.
ﻭﻗﺘﯽ ﺷﻤﺎ ﺍﻭﻟﻴﻦ ﭘﺮﻭژﻩ ﺧﻮﺩ ﺭﺍ ﺍﺟﺮﺍ ﻣﯽ ﻧﻤﺎﯾﻴﺪ ،ﻣﺘﺪ )( Indexﺍﺟﺮﺍ ﺷﺪﻩ ﻭ ﺳﭙﺲ Indexﺭﺍ ﺩﺭ ﻗﺴﻤﺖ returnﻧﻤﺎﯾﺶ ﻣﯽ
ﺩﻫﺪ .ﺍﮔﺮ ﺷﻤﺎ ﺑﺮ ﺭﻭی ﺗﺐ Aboutﺩﺭ ﺻﻔﺤﻪ ﺍﺻﻠﯽ ) ﻣﺮﻭﺭﮔﺮ ( ﮐﻠﻴﮏ ﮐﻨﻴﺪ ﺍﮐﺸﻦ ﯾﺎ ﺣﺎﻟﺖ ﺩﻭﻡ ﻣﺘﺪ ﮐﻪ )( Aboutﻣﯽ ﺑﺎﺷﺪ
ﺍﺗﻔﺎﻕ ﻣﯽ ﺍﻓﺘﺪ ﻭ ﻭﺍﺭﺩ ﺻﻔﺤﻪ Aboutﻣﻴﺸﻮﺩ.
FaEdu.irﮔﺮﻭﻩ ﺁﻣﻮﺯﺵ ﻓﺎﺭﺳﻲ ﺁﻣﻮﺯﺵ ﺑﻪ ﻫﻤﺮﺍﻩ ﭘﺮﻭژﻩ MVC.Net 13
…\Views\Home\About.aspx
…\Views\Home\Index.aspx
C# CODE
ﻫﻤﺎﻧﻄﻮﺭ ﮐﻪ ﻣﺸﺎﻫﺪﻩ ﻣﯽ ﻧﻤﺎﯾﻴﺪ ﺍﯾﻦ ﺻﻔﺤﻪ ﺗﻘﺮﯾﺒﺎً ﺍﺯ ﮐﺪﻫﺎی ﺍﺳﺘﺎﻧﺪﺍﺭﺩ HTMLﺑﻪ ﻫﻤﺮﺍﻩ ﯾﮏ ﺳﺮی ﮐﺪ ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ﺑﻪ
ﺯﺑﺎﻥ ASPﺗﺸﮑﻴﻞ ﺷﺪﻩ ﺍﺳﺖ.
ﻧﺘﻴﺠﻪ ﮔﻴﺮﻱ
ﻫﺪﻑ ﺍﺯ ﺍﯾﻦ ﺑﺨﺶ ﺁﻣﺎﺩﮔﯽ ﺷﻤﺎ ﻭ ﺫﻫﻦ ﺷﻤﺎ ﺑﺮﺍی ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ﺑﻪ ﺯﺑﺎﻥ ASP.Net MVCﺑﻮﺩﻩ .ﺩﺭ ﺍﻭﻝ ﻓﺼﻞ ﺷﻤﺎ ﺭﺍ ﺑﺎ
ﻣﺒﺤﺚ ﺩﺍﺕ ﻧﺖ ﻓﺮﯾﻤﻮﺭک ﺁﺷﻨﺎ ﮐﺮﺩﯾﻢ ﻭ ﯾﮏ ﺗﻮﺿﻴﺢ ﻣﺨﺘﺼﺮ ﺩﺭﺑﺎﺭﻩ ﺁﻥ ﺩﺍﺩﯾﻢ .ﺑﻌﺪ ﺩﺭ ﻣﻮﺭﺩ ASP.Net MVCﺻﺤﺒﺖ ﮐﺮﺩﯾﻢ ﻭ ﺍﺯ
ﻣﻌﻤﺎﺭی MVCﻧﻴﺰ ﭼﻨﺪ ﺧﻄﯽ ﺗﻮﺿﻴﺢ ﺩﺍﺩﯾﻢ .ﺳﭙﺲ ﺍﻭﻟﻴﻦ ﭘﺮﻭژﻩ ﺭﺍ ﺍﯾﺠﺎﺩ ﮐﺮﺩﯾﻢ ﻭ ﯾﮏ ﺗﻮﺿﻴﺢ ) ﻧﻪ ﭼﻨﺪﺍﻥ ﻣﻔﺼﻞ ( ﺩﺭﺑﺎﺭﻩ ﺁﻥ
ﺩﺍﺩﯾﻢ.
ﻫﺪﻑ ﺍﯾﻦ ﻓﺼﻞ ﺗﻨﻬﺎ ﺁﺷﻨﺎﯾﯽ ﺍﻭﻟﻴﻪ ﺷﻤﺎ ﺑﺎ ﺗﮑﻨﻮﻟﻮژِی ASP.Net MVCﺑﻮﺩﻩ ﺍﺳﺖ.
ﺩﺭ ﭘﺎﯾﺎﻥ ﺍﺯ ﺷﻤﺎ ﺩﻭﺳﺘﺎﻥ ﻣﯽ ﺧﻮﺍﻫﻢ ﭼﻨﺎﻧﭽﻪ ﻧﻈﺮ ﯾﺎ ﺍﻧﺘﻘﺎﺩی ﺩﺭﺑﺎﺭﻩ ﺍﯾﻦ ﻣﻄﺎﻟﺐ ﺩﺍﺭﯾﺪ ﺣﺘﻤﺎً ﺑﺎ ﺑﻨﺪﻩ ﺩﺭ ﻣﻴﺎﻥ ﺑﮕﺬﺍﺭﯾﺪ.
Farjadp@live.com
U U faedu.ir@gmail.com
U U ﻣﺮﺗﻀﯽ ﭘﻮﺭﻣﺤﻤﺪ 0912 – 283 0 795
ﻓﺼﻞ ﺍﻭﻝ
* ﺷﺮﻭﻉ ﺑﺎ ﯾﮏ ﭘﺮﻭژﻩ ﺧﺎﻟﯽ
* ﺳﺎﺧﺖ ﺩﯾﺘﺎﺑﻴﺲ
* ﺳﺎﺧﺖ MODEL
* ﺳﺎﺧﺖ CONTROLLER
ﺩﺭ ﻓﺼﻞ ﻗﺒﻞ ﻣﺎ ﺩﺭ ﻣﻮﺭﺩ ﻣﻘﺎﻫﻴﻢ ﭘﺎﯾﻪ ﺍی ﻭ ﻫﻤﭽﻨﻴﻦ ﺍﻫﺪﺍﻑ ﻭ ﻧﮑﺎﺗﯽ ﭘﻴﺮﺍﻣﻮﻥ ASP.NET MVCﺻﺤﺒﺖ ﮐﺮﺩﯾﻢ .ﺩﺭ ﺍﯾﻦ ﻓﺼﻞ ﺩﺭ
ﺍﺩﺍﻣﻪ ﻣﺒﺤﺚ ﻗﺒﻠﯽ ﺷﺮﻭﻉ ﺑﻪ ﺳﺎﺧﺖ ﯾﮏ ﭘﺮﻭژﻩ ﻣﻌﻤﻮﻟﯽ ﻫﻤﺮﺍﻩ ﺑﺎ ﺩﯾﺘﺎﺑﻴﺲ ﻣﯽ ﻧﻤﺎﯾﻴﻢ .ﺍﺯ ﻧﮑﺎﺕ ﻭ ﺗﺮﻓﻨﺪﻫﺎی ﻃﺮﺍﺣﯽ
) (DESIGNﻧﻴﺰ ﭼﺸﻢ ﭘﻮﺷﯽ ﻣﯽ ﮐﻨﻴﻢ ﻭ ﺑﻴﺸﺘﺮ ﺑﻪ ﺍﺻﻮﻝ ﻭ ﻧﮑﺎﺕ ﻣﻬﻢ ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ﻣﯽ ﭘﺮﺩﺍﺯﯾﻢ .ﻫﺪﻑ ﺭﻭﺷﻦ ﺷﺪﻥ
ﻣﻔﺎﻫﻴﻢ ﺑﻨﻴﺎﺩی ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ﺗﺤﺖ ASP.NET MVCﻣﻴﺒﺎﺷﺪ.
ﺑﺮﯾﻢ ﺗﺎ ﺍﻭﻟﻴﻦ ﭘﺮﻭژﻩ ی ﺭﺳﻤﯽ ﺧﻮﺩﻣﻮﻥ ﺭﻭ ﺷﺮﻭﻉ ﮐﻨﻴﻢ!!!! ﺧﻮﺏ ﺩﺭ ﺍﯾﻨﺠﺎ ﻣﻴﺒﺎﯾﺴﺖ ﺍﺑﺘﺪﺍ ﯾﮏ ﭘﺮﻭژﻩ ﺍﯾﺠﺎﺩ ﮐﻨﻴﻢ ﻭ ﺳﭙﺲ
ﻣﺤﺘﻮﺍی ﺻﻔﺤﺎﺕ ﺍﻥ ﺭﺍ ﭘﺎک ) ﺣﺬﻑ ( ﻧﻤﺎﯾﻴﻢ ...ﭼﻄﻮﺭ؟؟ ﻣﻄﺎﺑﻖ ﻣﺮﺍﺣﻞ ﺯﯾﺮ:
- ۴ﻧﺎﻣﯽ ﺑﺮﺍی ﺍﯾﻦ ﭘﺮﻭژﻩ ﺍﻧﺘﺨﺎﺏ ﻣﯽ ﻧﻤﺎﯾﻴﻢ .ﺑﻨﺪﻩ ﻧﺎﻡ ToyStoreﺭﺍ ﺍﻧﺘﺨﺎﺏ ﮐﺮﺩﻩ ﺍﻡ.
ﻫﻤﺎﻧﻄﻮﺭ ﮐﻪ ﺩﺭ ﺑﺨﺶ ﺍﻭﻝ ﮔﻔﺘﻢ ﻫﻨﮕﺎﻣﯽ ﮐﻪ ﺑﺮ ﺭﻭی ﮔﺰﯾﻨﻪ OKﮐﻠﻴﮏ ﻣﯽ ﮐﻨﻴﺪ ﯾﮏ ﭘﻨﺠﺮﻩ ﻣﺤﺎﻭﺭﻩ ﺍی ﺑﺎﺯ ﻣﯽ ﺷﻮﺩ
ﮐﻪ ﺷﻤﺎ ﻣﯽ ﺑﺎﯾﺴﺖ ﺁﻥ ﺭﺍ ﻧﻴﺰ OKﻧﻤﺎﯾﻴﺪ.
FaEdu.irﮔﺮﻭﻩ ﺁﻣﻮﺯﺵ ﻓﺎﺭﺳﻲ ﺁﻣﻮﺯﺵ ﺑﻪ ﻫﻤﺮﺍﻩ ﭘﺮﻭژﻩ MVC.Net 16
ﻫﻤﭽﻨﻴﻦ ﺩﺭ ﺑﺨﺶ ﺍﻭﻝ ﻧﻴﺰ ﺩﺭ ﺑﺎﺭﻩ ﺻﻔﺤﺎﺗﯽ ﮐﻪ ﺑﻪ ﻃﻮﺭ ﺧﻮﺩﮐﺎﺭ ﺗﻮﺳﻂ ﻭﯾﮋﻭﺍﻝ ﺍﺳﺘﻮﺩﯾﻮ ﺳﺎﺧﺘﻪ ﻣﯽ ﺷﻮﻧﺪ ﺻﺤﺒﺖ
ﮐﺮﺩﻡ .ﻣﻄﺎﺑﻖ ﺁﻧﭽﻪ ﺩﺭ ﺯﯾﺮ ﻣﯽ ﮔﻮﯾﻢ ﻓﺎﯾﻞ ﻫﺎﯾﯽ ﺭﺍ ﺍﺯ ﭘﺮﻭژﻩ ﺣﺬﻑ ﻧﻤﺎﯾﻴﺪ:
C# CODE
\Controllers\HomeController.cs
\Controllers\HomeControllerTest.cs
\View\Home\About.aspx
\View\Home\Index.aspx
VB CODE
\Controllers\HomeController.vb
\Controllers\HomeControllerTest.vb
\View\Home\About.aspx
\View\Home\Index.aspx
ﺳﺎﺧﺖ ﺩﻳﺘﺎﺑﻴﺲ
ﻣﺎ ﺑﺮﺍی ﺍﯾﻦ ﭘﺮﻭژﻩ ﻧﻴﺎﺯ ﺑﻪ ﯾﮏ ﺩﯾﺘﺎﺑﻴﺴﯽ ﺩﺍﺭﯾﻢ ﺗﺎ ﻣﺤﺘﻮﯾﺎﺕ ﻣﻮﺭﺩ ﻧﻈﺮ ﺭﺍ ﺩﺭ ﺁﻥ ﺫﺧﻴﺮﻩ ﮐﻨﻴﻢ .ﻧﻮﻉ ﺩﯾﺘﺎﺑﻴﺲ ﻣﻬﻢ ﻧﻴﺴﺖ ﺯﯾﺮﺍ
ASP.NET MVCﺑﺎ ﺗﻤﺎﻣﯽ ﭘﺎﯾﮕﺎﻩ ﺩﺍﺩﻩ ﻫﺎ ﺭﺍﺑﻄﻪ ی ﺧﻮﺑﯽ ﺩﺍﺭﺩ ﻭ ﺁﻧﻬﺎ ﺭﺍ ﭘﺸﺘﻴﺒﺎﻧﯽ ﻣﯽ ﻧﻤﺎﯾﺪ ﻣﻨﺠﻤﻠﻪ Oracle, MySql ,
Microsoft Sql Serverﻭ ...
ﺩﺭ ﺍﯾﻦ ﮐﺘﺎﺏ ) ﻭ ﺍﺻﻮﻻ ﺗﻤﺎﻣﯽ ﻋﺰﯾﺰﺍﻧﯽ ﮐﻪ ﺑﺎ ﻣﺤﺼﻮﻻﺕ ﻣﺎﯾﮑﺮﻭﺳﺎﻓﺖ ﮐﺎﺭ ﻣﯽ ﮐﻨﻨﺪ ( ﺑﻨﺪﻩ ﺍﺯ ﭘﺎﯾﮕﺎﻩ ﺩﺍﺩﻩ ی ﻣﺎﯾﮑﺮﻭﺳﺎﻓﺖ
ﯾﻌﻨﯽ SQL Serverﺍﺳﺘﻔﺎﺩﻩ ﻣﯽ ﻧﻤﺎﯾﻢ
ﺑﺮﺍی ﺳﺎﺧﺖ ﺩﯾﺘﺎﺑﻴﺲ ﻣﺮﺍﺣﻞ ﺯﯾﺮ ﺭﺍ ﺩﺭ ﻫﻤﺎﻥ ﻣﺤﻴﻄﯽ ﮐﻪ ﻫﺴﺘﻴﻢ ﯾﻌﻨﯽ ﻭﯾﮋﻭﺍﻝ ﺍﺳﺘﻮﺩﯾﻮ ،ﻃﯽ ﻣﯽ ﮐﻨﻴﻢ:
ﺑﻌﺪ ﺍﺯ ﺍﯾﻨﮑﻪ ﺷﻤﺎ ﺩﯾﺘﺎﺑﻴﺲ ﺭﺍ ﺳﺎﺧﺘﻴﺪ ﻧﻴﺎﺯ ﺩﺍﺭﯾﺪ ﺗﺎ ﺟﺪﺍﻭﻝ ﺁﻥ ﻫﻤﺮﺍﻩ ﺑﺎ ﻓﻴﻠﺪ ﻫﺎی ﺁﻥ ﺟﺪﺍﻭﻝ ﺭﺍ ﺑﺴﺎﺯﯾﻢ .ﺑﻨﺪﻩ ﺑﺮﺍی ﺍﯾﻦ ﭘﺮﻭژﻩ
ﯾﮏ ﻓﺮﻭﺷﮕﺎﻩ ﻓﺮﻭﺵ ﺍﺳﺒﺎﺏ ﺑﺎﺯی ﺍﻧﺘﺨﺎﺏ ﻧﻤﻮﺩﻩ ﺍﻡ ) ﺑﻪ ﺧﺎﻃﺮ ﮐﻮﺩک ﺩﺭﻭﻧﻢ !!! ( ﺑﻪ ﻣﺮﺍﺣﻞ ﺯﯾﺮ ﺑﺎ ﺩﻗﺖ ﻧﮕﺎﻩ ﮐﻨﻴﺪ ﺗﺎ ﻣﺮﺍﺣﻞ
ﺳﺎﺧﺖ ﺟﺪﻭﻝ ﻣﺤﺼﻮﻻﺕ ﺭﺍ ﻣﺘﻮﺟﻪ ﺷﻮﯾﺪ:
- ۵ﺍﺯ ﻓﻮﻟﺪﺭ App_Dataﻭ ﻓﺎﯾﻞ ) ToyStore.dbﯾﻌﻨﯽ ﻫﻤﺎﻥ ﺩﯾﺘﺎﺑﻴﺴﯽ ﮐﻪ ﺩﺭ ﻣﺮﺣﻠﻪ ٣ﻧﺎﻣﮕﺬﺍﺭی ﮐﺮﺩﯾﻢ ( ﺍﻧﺘﺨﺎﺏ ﻭ ﺩﺍﺑﻞ
ﮐﻠﻴﮏ ﻣﯽ ﻧﻤﺎﯾﻴﻢ ﺗﺎ Server Explorerﺑﺎﺯ ﺷﻮﺩ.
- ۶ﺍﺯ ﭘﻨﺠﺮﻩ ﺑﺎﺯ ﺷﺪﻩ ﺑﺮ ﺭﻭی Tablesﺭﺍﺳﺖ ﮐﻠﻴﮏ ﮐﺮﺩﻩ ﻭ Add New Tableﺭﺍ ﺍﻧﺘﺨﺎﺏ ﻣﯽ ﻧﻤﺎﯾﻴﻢ.
- ٧ﻣﺤﻴﻄﯽ ﻣﺎﻧﻨﺪ ﺷﮑﻞ ﺯﯾﺮ ﻇﺎﻫﺮ ﻣﯽ ﮔﺮﺩﺩ.
- ٨ﻣﻄﺎﺑﻖ ﻓﻬﺮﺳﺖ ﺯﯾﺮ ﻓﻴﻠﺪ ﻫﺎ ﺭﺍ ﭘﺮ ﻧﻤﺎﯾﻴﺪ ) ﺩﺭ ﺁﯾﻨﺪﻩ ﯾﺎ ﺩﺭ ﮐﺘﺎﺑﯽ ﺟﺪﺍﮔﺎﻧﻪ ﺩﺭ ﻣﻮﺭﺩ ﻭﯾﮋﮔﯽ ﻫﺎی ﻭ ﺑﻪ ﻃﻮﺭ ﮐﻞ ﺳﺎﺧﺖ
ﺟﺪﺍﻭﻝ ﺩﺭ ﭘﺎﯾﮕﺎﻩ ﺩﺍﺩﻩ Microsoft Sql Serverﺻﺤﺒﺖ ﻣﯽ ﮐﻨﻢ (
- ٩ﻓﻴﻠﺪ ﺍﻭﻝ ﯾﻌﻨﯽ Idﺭﺍ ﺑﻪ ﻋﻨﻮﺍﻥ identityﺍﻧﺘﺨﺎﺏ ﻣﯽ ﻧﻤﺎﯾﻴﻢ ﻭ ﺁﻥ ﺭﺍ ﺑﺮﺍﺑﺮ YESﻣﯽ ﮔﺬﺍﺭﯾﻢ ) ﻣﻄﺎﺑﻖ ﺷﮑﻞ (
- ١٠ﻭ ﻫﻤﭽﻨﻴﻦ ﺍﯾﻦ ﻓﻴﻠﺪ ﺭﺍ ﺑﻪ ﻋﻨﻮﺍﻥ ﮐﻠﻴﺪ ﺍﺻﻠﯽ ﺍﻧﺘﺨﺎﺏ ﻣﯽ ﮐﻨﻴﻢ ) ﺑﺮ ﺭﻭی ﻓﻴﻠﺪ ﺭﺍﺳﺖ ﮐﻠﻴﮏ ﮐﺮﺩﻩ ﻭ ﮔﺰﯾﻨﻪ Set Primary
Keyﺭﺍ ﺍﻧﺘﺨﺎﺏ ﻣﯽ ﻧﻤﺎﯾﻴﻢ(.
- ١١ﺣﺎﻝ ﮐﺎﻓﻴﺴﺖ ﺑﺮﺍی ﺫﺧﻴﺮﻩ ﺩﮐﻤﻪ Saveﺭﺍ ﺑﺰﻧﻴﺪ ﻭ ﯾﺎ ﺍﺯ ﺭﻭی ﮐﻴﺒﻮﺭﺩ ﺩﮐﻤﻪ ﻫﺎی CTRL + Sﺭﺍ ﻫﻤﺰﻣﺎﻥ ﻓﺸﺎﺭ ﺩﻫﻴﺪ
- ١٢ﺩﺭ ﺍﯾﻦ ﻣﺮﺣﻠﻪ ﺍﺯ ﺷﻤﺎ ﻣﯽ ﺧﻮﺍﻫﺪ ﻧﺎﻣﯽ ﺑﺮﺍی ﺍﯾﻦ ﺟﺪﻭﻝ ﺧﻮﺩ ﺍﻧﺘﺨﺎﺏ ﻧﻤﺎﯾﻴﺪ .ﺑﻨﺪﻩ ﺩﺭ ﺍﯾﻨﺠﺎ ﻧﺎﻡ Productﺭﺍ ﺍﻧﺘﺨﺎﺏ ﻣﯽ
ﮐﻨﻢ.
ﺗﺒﺮﯾﮏ ﻣﯽ ﮔﻢ ﺷﻤﺎ ﺍﻭﻟﻴﻦ ﺟﺪﻭﻝ ﺧﻮﺩ ﺭﺍ ﺳﺎﺧﺘﻴﺪ ﻭ ﺍﻭﻟﻴﻦ ﺁﺟﺮ ﺍﯾﻦ ﺳﺎﺧﺘﻤﺎﻥ ﺭﺍ ﺑﻨﺎ ﻧﻬﺎﺩﯾﺪ ) ﺑﻨﺎﺯﻡ ﺑﻪ ﺍﯾﻦ ﺍﺩﺑﻴﺎﺕ ( .ﺣﺎﻝ ﺑﺮﺍی
ﻧﻤﻮﻧﻪ ﯾﮏ ﺳﺮی ﺩﺍﺩﻩ ﻣﻌﻤﻮﻟﯽ ﻭ ﺗﺴﺖ ﻭﺍﺭﺩ ﻣﯽ ﮐﻨﻴﻢ .ﺑﺎ ﮐﻠﻴﮏ ﺳﻤﺖ ﺭﺍﺳﺖ ﺑﺮ ﺭﻭی ﻧﺎﻡ ﺟﺪﻭﻝ )ﺍﺯ ﻗﺴﻤﺖServer Explorer
ﻭ ﺑﺎ ﮐﻠﻴﮏ ﺑﺮ ﺭﻭی ﻋﻼﻣﺖ ( Table +ﻭ ﺍﻧﺘﺨﺎﺏ ﮔﺰﯾﻨﻪ Show Table Dataﻣﯽ ﻧﻮﺍﻧﻴﺪ ﺍﯾﻦ ﮐﺎﺭ ﺭﺍ ﺍﻧﺠﺎﻡ ﺩﻫﻴﺪ.
FaEdu.irﮔﺮﻭﻩ ﺁﻣﻮﺯﺵ ﻓﺎﺭﺳﻲ ﺁﻣﻮﺯﺵ ﺑﻪ ﻫﻤﺮﺍﻩ ﭘﺮﻭژﻩ MVC.Net 19
ﻣﺎ ﺑﺮﺍی ﻓﻬﻤﺎﻧﺪﻥ ﺑﻪ ﺩﯾﺎﺗﺒﻴﺲ ﻧﻴﺎﺯ ﺩﺍﺭﯾﻢ ﺗﺎ ﻣﺪﻟﯽ ﺍﺯ ﮐﻼﺱ ﻫﺎ ﺭﺍ ﺑﺴﺎﺯﯾﻢ .ﺭﺍﺣﺖ ﺗﺮﯾﻦ ﺭﺍﻩ ﺳﺎﺧﺖ ﮐﻼﺱ ﻫﺎ ،ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ
ﻧﻘﺸﻪ ﺭﺍﺑﻄﻪ ﺍی ﺷﯽ ﮔﺮﺍ ﮐﻪ ﻫﻤﺎﻥ ) Object Relational Mapping(ORMﺍﺳﺖ ) ﺑﺒﺨﺸﻴﺪ ﺧﻴﻠﯽ ﺑﺪ ﺗﺮﺟﻤﻪ ﮐﺮﺩﻡ .( ...ﺍﯾﻦ
ORMﺍﺑﺰﺍﺭﯾﺴﺖ ﮐﻪ ﺑﻪ ﺻﻮﺭﺕ ﺍﺗﻮﻣﺎﺗﻴﮏ ﺍﺯ ﺩﯾﺘﺎﺑﻴﺲ ﮐﻼﺱ ﻫﺎ ﺭﺍ ﻣﯽ ﺳﺎﺯﺩ ) .ﺍﯾﻦ ﺭﺍﺣﺖ ﺗﺮﯾﻦ ﺗﻮﺿﻴﺤﯽ ﺑﻮﺩ ﮐﻪ ﻣﻴﺸﺪ ﺩﺍﺩ (
ﺷﻤﺎ ﺑﻪ ﺩﻟﺨﻮﺍﻩ ﺧﻮﺩ ﻣﯽ ﺗﻮﺍﻧﻴﺪ ﺍﺯ ORMﻫﻤﺮﺍﻩ ASP.NET MVCﮐﻪ ﺑﻪ ﺻﻮﺭﺕ ﻓﺮﯾﻤﻮﺭک ﺍﺳﺖ ﺍﺳﺘﻔﺎﺩﻩ ﻧﻤﺎﯾﻴﺪ .ﻫﻤﭽﻨﻴﻦ
ASP.NET MVCﺑﺎ ﺗﮑﻨﻮﻟﻮژی ﻫﺎی ﻣﺨﺘﻠﻒ ﺍﺭﺗﺒﺎﻁ ﺑﺎ ﺩﯾﺘﺎﺑﻴﺲ ﻣﺎﻧﻨﺪ NHibernate ، Microsoft LINQ to SQLﻭ ﻫﻤﭽﻨﻴﻦ
Microsoft Entity Frameworkﻣﻄﺎﺑﻘﺖ ﻭ ﺳﺎﺯﮔﺎﺭی ﺩﺍﺭﺩ.
ﺑﻨﺪﻩ ﺩﺭ ﺍﯾﻦ ﮐﺘﺎﺏ ﺍﺯ Microsoft Entity Frameworkﺑﺮﺍی ﺳﺎﺧﺖ ﻣﺪﻝ ﮐﻼﺱ ﻫﺎ ﺍﺳﺘﻔﺎﺩﻩ ﻣﯽ ﮐﻨﻢ .ﺑﻨﺪﻩ ﺍﺯ ﺍﯾﻦ ﺗﮑﻨﻮﻟﻮژی
ﺍﺳﺘﻔﺎﺩﻩ ﻣﯽ ﮐﻨﻢ ﭼﻮﻥ ﺍﻋﺘﻘﺎﺩ ﺩﺍﺭﻡ ) ﻭ ﻓﮑﺮ ﮐﻨﻢ ﺗﻮ ﺳﺎﯾﺖ ﻣﺎﯾﮑﺮﻭﺳﺎﻓﺖ ﺑﻮﺩ ﮐﻪ ﺧﻮﻧﺪﻡ ( ﺍﯾﻦ ﺭﺍﻩ ﺣﻞ ﭘﻴﺸﻨﻬﺎﺩی ﻣﺎﯾﮑﺮﻭﺳﺎﻓﺖ
ﺑﺮﺍی ﺩﺳﺘﺮﺳﯽ ﺑﻪ ﺩﺍﺩﻩ ﺍﺳﺖ.
ﺣﺎﻝ ﺑﺮﺍی ﺳﺎﺧﺖ ﻣﺪﻝ ﮐﻼﺱ ﻫﺎی ﺩﺍﺩﻩ ﺍی ) : ( Data Model Classes
- ١ﺑﺎ ﮐﻠﻴﮏ ﺑﺮ ﺭﻭی ﻓﻮﻟﺪﺭ MODELﺍﺯ ﻗﺴﻤﺖ Solution Explorerﻭ ﺍﻧﺘﺨﺎﺏ ﮔﺰﯾﻨﻪ Add>New Item
- ٢ﺍﺯ ﻣﺠﻤﻮﻋﻪ ﺳﻤﺖ ﭼﭗ ﮐﻪ ﻫﻤﺎﻥ ﮔﺮﻭﻩ ﻫﺎ ﺍﺳﺖ ﮔﺰﯾﻨﻪ Dataﺭﺍ ﺍﻧﺘﺨﺎﺏ ﻭ ﺍﺯ ﻗﺴﻤﺖ ﺳﻤﺖ ﺭﺍﺳﺖ ADO.NET Entity
Data Modelﺭﺍ ﺍﻧﺘﺨﺎﺏ ﻧﻤﺎﯾﻴﺪ ) ﻣﺎﻧﻨﺪ ﺷﮑﻞ ﺯﯾﺮ (
- ٣ﻧﺎﻣﯽ ﺑﺮﺍی ﺍﯾﻦ ﻣﺪﻝ ﺍﻧﺘﺨﺎﺏ ﻣﯽ ﻧﻤﺎﯾﻴﻢ .ﺑﻨﺪﻩ ﻧﺎﻡ ToyStoreDataModelﺭﺍ ﺍﻧﺘﺨﺎﺏ ﮐﺮﺩﻩ ﺍﻡ.
FaEdu.irﮔﺮﻭﻩ ﺁﻣﻮﺯﺵ ﻓﺎﺭﺳﻲ ﺁﻣﻮﺯﺵ ﺑﻪ ﻫﻤﺮﺍﻩ ﭘﺮﻭژﻩ MVC.Net 20
ﺣﺎﻝ ﻭﺍﺭﺩ ﻣﺮﺣﻠﻪ ﺍی ﺟﺪﯾﺪ ﻣﯽ ﺷﻮﯾﻢ .ﭘﺲ ﺍﺯ ﺍﯾﻨﮑﻪ ﺩﮐﻤﻪ Addﺭﺍ ﮐﻠﻴﮏ ﮐﺮﺩﯾﻢ ﻭﺍﺭﺩ ﻣﺮﺣﻠﻪ ﻭﯾﺰﺍﺭﺩی ﻣﯽ ﺷﻮﯾﻢ.
ﻣﻄﺎﺑﻖ ﻣﺮﺍﺣﻞ ﺯﯾﺮ ﻋﻤﻞ ﻣﯽ ﻧﻤﺎﯾﻴﻢ:
- ١ﺍﺯ ﻣﺮﺣﻠﻪ ﺍﻭﻝ ﮔﺰﯾﻨﻪ ی Generate from databaseﺭﺍ ﺍﻧﺘﺨﺎﺏ ﻣﯽ ﻧﻤﺎﯾﻴﻢ ﻭ Nextﺭﺍ ﻣﯽ ﺯﻧﻴﻢ.
- ٢ﺩﺭ ﻣﺮﺣﻠﻪ ﺑﻌﺪی ﻣﯽ ﺑﺎﯾﺴﺖ ﮐﺎﻧﮑﺸﻦ ﻣﻮﺭﺩ ﻧﻈﺮ ﺭﺍ ﺍﻧﺘﺨﺎﺏ ﻣﯽ ﮐﻨﻴﻢ .ﻭ ﻧﺎﻣﯽ ﮐﻪ ﺍﯾﻦ ﮐﺎﻧﮑﺸﻦ ﺩﺭ ﻓﺎﯾﻞ web.cofig
ﺍﯾﺠﺎﺩ ﻣﯽ ﮐﻨﺪ ﺭﺍ ﺍﻧﺘﺨﺎﺏ ﻣﯽ ﮐﻨﻴﻢ.
FaEdu.irﮔﺮﻭﻩ ﺁﻣﻮﺯﺵ ﻓﺎﺭﺳﻲ ﺁﻣﻮﺯﺵ ﺑﻪ ﻫﻤﺮﺍﻩ ﭘﺮﻭژﻩ MVC.Net 21
- ٣ﺩﺭ ﺍﯾﻦ ﻣﺮﺣﻠﻪ ﻣﺪﻝ ﺷﯽ ﺍﺯ ﺩﯾﺘﺎﺑﻴﺲ ﺭﺍ ﺍﻧﺘﺨﺎﺏ ﻣﯽ ﻧﻤﺎﯾﻴﻢ .ﺩﺭ ﺍﯾﻦ ﻗﺴﻤﺖ ﺟﺪﺍﻭﻟﯽ ﺭﺍ ﮐﻪ ﻣﯽ ﺧﻮﺍﻫﻴﻢ ﺑﺮ ﺭﻭی ﺁﻧﻬﺎ
ﺍﻋﻤﺎﻟﯽ ﺍﻧﺠﺎﻡ ﺩﻫﻴﻢ ﺭﺍ ﺍﻧﺘﺨﺎﺏ ﻣﯽ ﮐﻨﻴﻢ .ﺩﺭ ﺣﺎﻝ ﺣﺎﺿﺮ ﻓﻘﻂ ﺟﺪﻭﻝ Productﻣﻮﺟﻮﺩ ﺍﺳﺖ .ﭘﺲ ﺁﻥ ﺭﺍ ﺍﻧﺘﺨﺎﺏ ﻣﯽ
ﻧﻤﺎﯾﻴﻢ .ﻭ ﻧﺎﻣﯽ ﺑﺮﺍی ﻓﻀﺎی ﻧﺎﻣﯽ ) ( namespaceﺁﻥ ﺍﻧﺘﺨﺎﺏ ﻣﯽ ﮐﻨﻴﻢ .ﺑﻨﺪﻩ ﺩﺭ ﺍﯾﻨﺠﺎ ﻧﺎﻡ Modelsﺭﺍ ﺑﺮﮔﺰﯾﺪﻡ.
FaEdu.irﮔﺮﻭﻩ ﺁﻣﻮﺯﺵ ﻓﺎﺭﺳﻲ ﺁﻣﻮﺯﺵ ﺑﻪ ﻫﻤﺮﺍﻩ ﭘﺮﻭژﻩ MVC.Net 22
ﻣﻼﺣﻈﻪ ﻣﯽ ﮐﻨﻴﻢ ﮐﻪ ﻓﻀﺎﻫﺎی ﻧﺎﻣﯽ ﺑﻪ ﻓﻮﻟﺪﺭ Referenceﺍﺿﺎﻓﻪ ﺷﺪﻩ ﺍﺳﺖ .ﻫﻤﭽﻨﻴﻦ ﺑﻪ ﻓﻮﻟﺪﺭ Modelsﻧﻴﺰ ﯾﮏ ﻓﺎﯾﻞ ﺍﺿﺎﻓﻪ
ﺷﺪﻩ ﺍﺳﺖ .ﻭ ﺩﺭ ﺻﻔﺤﻪ ﭘﻴﺶ ﺭﻭ ﻇﺎﻫﺮی ﻣﻄﺎﺑﻖ ﺷﮑﻞ ﺩﯾﺪﻩ ﻣﯽ ﺷﻮﺩ
ﺭﺍﺣﺖ ﺗﺮﯾﻦ ﻭ ﻣﺤﺘﻤﻞ ﺗﺮﯾﻦ ﻋﻤﻞ ﺍﯾﻦ ﺍﺳﺖ ﮐﻪ ﺷﻤﺎ ﺩﺭ ﺍﯾﻦ ﺻﻔﺤﻪ ﻣﯽ ﺗﻮﺍﻧﻴﺪ ﮐﻼﺱ ﻫﺎی ﺍﯾﺠﺎﺩ ﺷﺪﻩ ﺭﺍ ﻣﺘﻨﺎﺳﺐ ﺑﺎ ﺭﻭﻧﺪ ﭘﺮﻭژﻩ
ﻭ ﻧﻮﻉ ﻧﺎﻣﮕﺬﺍﺭی ﻫﺎی ) ﭘﺮﺳﺘﻴﮋ ﮐﺎﺭی ﻭ ﺍﺳﺘﺎﻧﺪﺍﺭﺩ ﮐﺎﺭی ﻫﺮ ﺷﺨﺺ ( ﺧﻮﺩ ﺗﻐﻴﻴﺮ ﺩﻫﻴﺪ .ﮐﺎﻓﻴﺴﺖ ﺑﺎ ﺩﺍﺑﻞ ﮐﻠﻴﮏ ﻭ ﯾﺎ ﮐﻠﻴﮏ
ﺳﻤﺖ ﺭﺍﺳﺖ ﻭ ﺍﻧﺘﺨﺎﺏ ﮔﺰﯾﻨﻪ Renameﺍﯾﻦ ﻋﻤﻞ ﺭﺍ ﺍﻧﺠﺎﻡ ﺩﻫﻴﺪ.
ﺩﺭ ﺍﯾﻦ ﻣﺮﺣﻠﻪ ﺗﻮﺍﻧﺴﺘﻴﻢ ﺑﺎ ﻣﻮﻓﻘﻴﺖ ﺗﻮﺍﻧﺴﺘﻴﻢ Data Model Classesﯾﺎ ﻫﻤﺎﻥ ﻣﺪﻝ ﮐﻼﺱ ﻫﺎی ﺩﺍﺩﻩ ﺍی ﺭﺍ ﺍﯾﺠﺎﺩ ﮐﻨﻴﻢ .ﻣﺎ ﺍﺯ
ﺍﯾﻦ ﮐﻼﺱ ﻫﺎ ﺑﺮﺍی ﻧﺸﺎﻥ ﺩﺍﺩﻥ ﺩﯾﺘﺎﺑﻴﺲ ﺧﻮﺩﻣﺎﻥ ) ﮐﻪ ﺑﺮﺍی ﺑﻨﺪﻩ ( ToyStoreDBﻫﻤﺮﺍﻩ ﺑﺎ ﺭﺍﺑﻂ ﻫﺎی ﺑﺮﻧﺎﻣﻪ ﺍی ASP.NET
MVCﻣﯽ ﺑﺎﺷﺪ .ﺑﻪ ﺯﺑﺎﻥ ﺳﺎﺩﻩ ﺗﺮ :ﯾﻌﻨﯽ ﺑﻪ ﮐﻤﮏ ﺍﯾﻦ ﮐﻼﺱ ﻫﺎ ﻣﯽ ﺗﻮﺍﻧﻴﻢ ﺩﯾﺘﺎﺑﻴﺲ ﺭﺍ ﺩﺭ MVCﻧﺸﺎﻥ ﺩﻫﻴﻢ.
ﮐﻨﺘﺮﻟﺮﻫﺎ ) ( Controllersﺩﺭ ASP.NET MVC Applicationﻫﺎ ﺟﺮﯾﺎﻥ ﺍﺟﺮﺍ ﺷﺪﻥ ﺑﺮﻧﺎﻣﻪ ﺭﺍ ﮐﻨﺘﺮﻝ ﻣﯽ ﮐﻨﻨﺪ .ﮐﻨﺘﺮﻟﯽ ﮐﻪ ﺍﯾﻦ
ﺩﺭﺧﻮﺍﺳﺖ ﺭﺍ ﻣﯽ ﺩﻫﺪ ﺑﻪ ﺻﻮﺭﺕ ﭘﻴﺶ ﻓﺮﺽ ﻣﯽ ﺑﺎﺷﺪ ﻭ ﻧﺎﻡ ﺁﻥ ﮐﻨﺘﺮﻟﺮ Homeﻣﯽ ﺑﺎﺷﺪ .ﻣﺎ ﺍﺣﺘﻴﺎﺝ ﺩﺍﺭﯾﻢ ﺗﺎ ﺍﯾﻦ ﮐﻨﺘﺮﻟﺮ ﺭﺍ
ﺍﯾﺠﺎﺩ ﮐﻨﻴﻢ ) .ﺑﻪ ﺯﺑﺎﻥ ﺳﺎﺩﻩ ﺗﺮ ﺍﯾﻨﺠﻮﺭ ﺑﮕﻢ :ﻫﻤﻮﻧﻄﻮﺭ ﮐﻪ ﻭﻗﺘﯽ ﻣﯽ ﺧﻮﺍﻫﻴﻢ ﯾﮏ ﺳﺎﯾﺖ ﺭﺍ ﺑﺮ ﺭﻭی ﻫﺎﺳﺖ ﺁﭘﻠﻮﺩ ﮐﻨﻴﻢ ﺑﺮﺍی
ﻧﻤﺎﯾﺶ ﺣﺘﻤﺎً ﺑﺎﯾﺪ ﻧﺎﻡ ﺁﻥ ﺻﻔﺤﻪ ﯾﮑﯽ ﺍﺯ ﻣﻮﺍﺭﺩ index , defaultﺑﺎﺷﺪ -ﺣﺎﻝ ﺁﻧﮑﻪ ﭘﺴﻮﻧﺪ ﺁﻥ ﻣﻬﻢ ﻧﻴﺴﺖ ﭼﻪ PHPﺑﺎﺷﺪ ﭼﻪ
HTMLﻭ ﭼﻪ ( ...
- ١ﺑﺮ ﺭﻭی ﻓﻮﻟﺪﺭ Controllersﮐﻠﻴﮏ ﺳﻤﺖ ﺭﺍﺳﺖ ﮐﺮﺩﻩ ) ﻭ ﯾﺎ ﺍﺯ ﮐﻠﻴﺪﻫﺎی ﺗﺮﮐﻴﺒﯽ CTRL+Mﺍﺳﺘﻔﺎﺩﻩ ﻧﻤﺎﯾﻴﺪ( ﻭ ﺳﭙﺲ
ﮔﺰﯾﻨﻪ ی Add Controllerﺭﺍ ﺍﻧﺘﺨﺎﺏ ﻧﻤﺎﯾﻴﺪ.
ﮔﺮﻭﻩ ﺁﻣﻮﺯﺵ ﻓﺎﺭﺳﻲFaEdu.ir MVC.Net ﺁﻣﻮﺯﺵ ﺑﻪ ﻫﻤﺮﺍﻩ ﭘﺮﻭژﻩ 23
ﺑﻬﺘﺮ ﺍﺳﺖ ﺍﺯ ﻧﺎﻣﯽ. ﻣﻄﺎﺑﻖ ﺷﮑﻞ ﭘﻨﺠﺮﻩ ﺍی ﻇﺎﻫﺮ ﻣﯽ ﺷﻮﺩ ﮐﻪ ﻣﯽ ﺑﺎﯾﺴﺖ ﻧﺎﻣﯽ ﺭﺍ ﺑﺮﺍی ﺍﯾﻦ ﮐﻨﺘﺮﻟﺮ ﺍﻧﺘﺨﺎﺏ ﻧﻤﺎﯾﻴﺪ- ٢
ﺗﻴﮏ ﻣﺘﻦ ﭘﺎﯾﻴﻦ ﺍﯾﻦ ﺗﮑﺴﺖ ﺑﺎﮐﺲ ﺭﺍ ﻧﻴﺰ ﻓﻌﺎﻝ، HomeController : ﮐﻪ ﺑﻨﺪﻩ ﺍﺳﺘﻔﺎﺩﻩ ﻣﯽ ﮐﻨﻢ ﺍﺳﺘﻔﺎﺩﻩ ﻧﻤﺎﯾﻴﺪ
.ﻧﻤﺎﯾﻴﺪ
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace ToyStore.Controllers
{
public class HomeController : Controller
{
//
// GET: /Home/
//
// GET: /Home/Details/5
//
// GET: /Home/Create
//
// POST: /Home/Create
ﮔﺮﻭﻩ ﺁﻣﻮﺯﺵ ﻓﺎﺭﺳﻲFaEdu.ir MVC.Net ﺁﻣﻮﺯﺵ ﺑﻪ ﻫﻤﺮﺍﻩ ﭘﺮﻭژﻩ 24
[HttpPost]
public ActionResult Create(FormCollection collection)
{
try
{
// TODO: Add insert logic here
return RedirectToAction("Index");
}
catch
{
return View();
}
}
//
// GET: /Home/Edit/5
//
// POST: /Home/Edit/5
[HttpPost]
public ActionResult Edit(int id, FormCollection collection)
{
try
{
// TODO: Add update logic here
return RedirectToAction("Index");
}
catch
{
return View();
}
}
//
// GET: /Home/Delete/5
//
// POST: /Home/Delete/5
[HttpPost]
public ActionResult Delete(int id, FormCollection collection)
{
try
{
FaEdu.irﮔﺮﻭﻩ ﺁﻣﻮﺯﺵ ﻓﺎﺭﺳﻲ ﺁﻣﻮﺯﺵ ﺑﻪ ﻫﻤﺮﺍﻩ ﭘﺮﻭژﻩ MVC.Net 25
;)"return RedirectToAction("Index
}
catch
{
;)(return View
}
}
}
}
ﻭﻗﺘﯽ ﻣﺎ ﺩﺭ ﻣﺮﺣﻠﻪ ﺷﻤﺎﺭﻩ ٢ﮔﺰﯾﻨﻪ Add action methods for Create, Update, and Details scenarioﺭﺍ ﺍﻧﺘﺨﺎﺏ ﮐﺮﺩﯾﻢ ،
ﺩﺭ ﮐﺪﻫﺎی ﺍﯾﻦ ﺻﻔﺤﻪ ﻣﺸﺎﻫﺪﻩ ﻣﯽ ﮐﻨﻴﻢ ﮐﻪ ﺑﻪ ﻃﻮﺭ ﺧﻮﺩﮐﺎﺭ ﺗﻤﺎﻣﯽ ﺍﯾﻦ ﺭﻭﻧﺪﻫﺎ ﺭﺍ ﮐﺪﻧﻮﯾﺴﯽ ﮐﺮﺩﻩ ﻭ ﺩﯾﮕﺮ ﻻﺯﻡ ﻧﻴﺴﺖ ﺗﺎ ﻣﺎ
ﺩﻭﺑﺎﺭﻩ ﺍﻧﻬﺎ ﺭﺍ ﺩﺭ ﮐﻼﺱ ﻣﺠﺰﺍ ﺑﻨﻮﯾﺴﻴﻢ ﻭ ﺑﻪ ﻣﺸﮑﻼﺕ ﺍﺣﺘﻤﺎﻟﯽ ﺍﻧﺴﺎﻧﯽ ﺑﺮﺧﻮﺭﺩ ﮐﻨﻴﻢ .ﻫﻤﭽﻨﻴﻦ ﺩﺭ ﺍﯾﻦ ﺻﻔﺤﻪ ﺷﺎﻣﻞ ﺗﻮﺍﺑﻊ
ﻣﺘﻔﺎﻭﺗﯽ ﻫﺴﺘﻴﻢ ﮐﻪ ﺗﻮﺿﻴﺢ ﻣﺨﺘﺼﺮی ﺩﺭ ﺍﺭﺗﺒﺎﻁ ﺑﺎ ﻫﺮ ﯾﮏ ﻣﯽ ﺩﻫﻢ:
)( :Indexﺑﻪ ﺻﻮﺭﺕ ﭘﻴﺸﻔﺮﺽ ﺩﺭ ﺗﻤﺎﻣﯽ ﮐﻨﺘﺮﻟﺮ ﻫﺎ ﻋﻤﻞ ﻣﯽ ﮐﻨﺪ ﻭ ﻭﺟﻮﺩ ﺩﺍﺭﺩ .ﺑﻪ ﻋﻨﻮﺍﻥ ﻣﺜﺎﻝ ﻟﻴﺴﺖ ﺗﻤﺎﻣﯽ ﺁﯾﺘﻢ ﻫﺎ ﺭﺍ
ﻧﻤﺎﯾﺶ ﻣﯽ ﺩﻫﺪ
) :Create (collectionﺍﯾﻦ ﻋﻤﻞ ﻣﯽ ﮐﻨﺪ ﺑﺮﺍی ﻭﺍﺭﺩ ﮐﺮﺩﻥ ﺁﯾﺘﻢ ﺟﺪﯾﺪ ﺑﻪ ﺩﯾﺘﺎﺑﻴﺲ
) :Edit (idﺍﯾﻦ ﺑﺮﺍی ﻭﯾﺮﺍﯾﺶ ﺁﯾﺘﻢ ﻫﺎی ﻣﻮﺟﻮﺩ ﺑﮑﺎﺭ ﺑﺮﺩﻩ ﻣﯽ ﺷﻮﺩ.
) : Edit (id, collectionﺟﻬﺖ ﺑﻪ ﺭﻭﺯ ﺭﺳﺎﻧﯽ ﺁﯾﺘﻢ ﻫﺎی ﻣﻮﺟﻮﺩ ﺩﺭ ﺩﯾﺘﺎﺑﻴﺲ ﻣﻮﺭﺩ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺳﺖ.
ﺑﻪ ﻃﻮﺭ ﮐﻠﯽ Home Controller ،ﺗﻨﻬﺎ ﺭﯾﺸﻪ ی ﻣﻮﺍﺭﺩ ﺑﺎﻻ ﺭﺍ ﺷﺎﻣﻞ ﻣﯽ ﺷﻮﺩ .ﻫﺮﭼﻪ ﺑﻪ ﺟﻠﻮ ﺑﺮﻭﯾﻢ ﻭ ﺑﺮ ﺩﺍﻧﺶ ﺧﻮﺩ ﺑﻴﺎﻓﺰﺍﯾﻴﻢ
ﻣﯽ ﺗﻮﺍﻧﻴﻢ ﮐﺎﺭﺍﯾﯽ ﺍﯾﻦ ﻣﻮﺍﺭﺩ ﺭﺍ ﺑﻬﺘﺮ ﺩﺭک ﮐﻨﻴﻢ ﻭ ﺑﻪ ﺟﺎ ﺍﺯ ﺁﻧﻬﺎ ﺍﺳﺘﻔﺎﺩﻩ ﻧﻤﺎﯾﻴﻢ .ﺩﺭ ﺍﯾﻨﺠﺎ ﺑﻪ ﻋﻨﻮﺍﻥ ﻧﻤﻮﻧﻪ ﻣﯽ ﺧﻮﺍﻫﻴﻢ ﯾﮏ
ﺗﻐﻴﻴﺮﺍﺕ ﮐﻮﭼﮑﯽ ﺩﺭ ﺻﻔﺤﻪ ی Home Controllersﺑﺪﻫﻴﻢ .ﻣﯽ ﺗﻮﺍﻧﻴﺪ ﺩﺭ ﺁﺩﺭﺱ Controllers\HomeControllers.csﺍﯾﻦ ﺻﻔﺤﻪ
ﺭﺍ ﭘﻴﺪﺍ ﮐﻨﻴﺪ ﻭ ﻣﺎﻧﻨﺪ ﺑﻨﺪﻩ ﮐﺪ ﻫﺎی ﺍﯾﻦ ﺻﻔﺤﻪ ﺭﺍ ﺑﺎ ﺁﻧﭽﻪ ﺩﺭ ﺯﯾﺮ ﻣﻴﺎﻭﺭﻡ ﺟﺎﺑﺠﺎ ﮐﻨﻴﺪ:.
;using System.Linq
;using System.Web.Mvc
;using ToyStore.Models
namespace ToyStore.Controllers
{
public class HomeController : Controller
{
;)(private ToyStoreDBEntities _dataModel = new ToyStoreDBEntities
//
// GET: /Home/
//
// GET: /Home/Create
//
// POST: /Home/Create
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create([Bind(Exclude = "Id")]Product productToCreate)
{
if (!ModelState.IsValid)
return View();
try
{
_dataModel.AddToProducts(productToCreate);
_dataModel.SaveChanges();
return RedirectToAction("Index");
}
catch
{
return View();
}
}
//
// GET: /Home/Edit/5
//
// POST: /Home/Edit/5
[HttpPost]
public ActionResult Edit(int id, FormCollection collection)
{
try
{
// TODO: Add update logic here
return RedirectToAction("Index");
}
catch
{
return View();
FaEdu.irﮔﺮﻭﻩ ﺁﻣﻮﺯﺵ ﻓﺎﺭﺳﻲ ﺁﻣﻮﺯﺵ ﺑﻪ ﻫﻤﺮﺍﻩ ﭘﺮﻭژﻩ MVC.Net 27
}
}
}
}
ﺩﺭ ﺍﺑﺘﺪﺍ ﻣﺎ ﯾﮏ ﻓﻴﻠﺪ ﺍﺧﺘﺼﺎﺻﯽ ﺑﺎ ﻧﺎﻡ _dataModelﺍﺯ ﻧﻮﻉ DBStoreEntitiesﺗﻌﺮﯾﻒ ﮐﺮﺩﯾﻢ ) .ﺑﻪ ﺯﺑﻮﻥ ﺧﻮﺩﻣﻮﻥ ﯾﻌﻨﯽ ﺍﺯﺵ ﯾﻪ
instantﮔﺮﻓﺘﻴﻢ (.ﺍﯾﻦ DBStoreEntitiesﻧﻴﺰ ﻫﻤﺎﻥ ﮐﻼﺳﯽ ﺍﺳﺖ ﮐﻪ ﻣﺎ ﺑﻪ ﺻﻮﺭﺕ ﻭﯾﺰﺍﺭﺩی ﺩﺭ ﻣﺮﺍﺣﻞ ﻗﺒﻞ ﺍﯾﺠﺎﺩ ﮐﺮﺩﯾﻢ.
ﺗﺎﺑﻊ ﻋﻤﻠﻴﺎﺗﯽ )( indexﻧﻴﺰ ﺑﺮﺍی ﺑﺎﺯﮔﺮﺩﺍﻧﺪﻥ ﻟﻴﺴﺖ ﻣﺤﺼﻮﻻﺕ ﺗﻌﺮﯾﻒ ﺷﺪﻩ ﺍﺳﺖ .ﯾﻌﻨﯽ )(_dataModel.Products.ToList
ﻟﻴﺴﺖ ﺗﻤﺎﻣﯽ ﻣﺤﺼﻮﻻﺕ ﺭﺍ ﺍﺯ ﺩﯾﺘﺎﺑﻴﺲ ﺑﺮﺍی ﻣﺎ ﺑﺮﻣﯽ ﮔﺮﺩﺍﻧﺪ.
ﺩﺭ ﺍﯾﻨﺠﺎ ﺩﻭ ﺗﺎﺑﻊ ﻋﻤﻠﻴﺎﺗﯽ ﺑﺎ ﻧﺎﻡ )( Createﺩﺍﺭﯾﻢ .ﺗﺎﺑﻊ ﺍﻭﻟﯽ ﺩﺭ ﺍﺑﺘﺪﺍ ﺟﻬﺖ ﺍﯾﺠﺎﺩ ﻣﺤﺼﻮﻻﺕ ﺟﺪﯾﺪ ﻋﻤﻞ ﻣﯽ ﻧﻤﺎﯾﺪ .ﻭ ﺗﺎﺑﻊ ﺩﻭﻣﯽ
ﻧﻴﺰ ﻋﻤﻞ ﺩﺭﺝ ﻣﺤﺼﻮﻻﺕ ﺟﺪﯾﺪ ﺩﺭ ﺩﯾﺘﺎﺑﻴﺲ ﺍﺳﺖ.
ﺩﺭ ﺣﻘﻴﻘﺖ ﺗﺎﺑﻊ ﺩﻭﻡ )( Createﻋﻤﻞ ﺗﻌﺮﯾﻒ ﻭ ﻗﺒﻮﻝ ﺍﯾﺠﺎﺩ ﻣﺤﺼﻮﻻﺕ ﺭﺍ ﺑﺮ ﻋﻬﺪﻩ ﺩﺍﺭﺩ .ﺩﺭ ﻧﻬﺎﯾﺖ ﺗﺎﺑﻊ ﻋﻤﻠﮕﺮ )( Createﻋﻤﻞ
ﻓﺮﺍﺧﻮﺍﻧﯽ ﻣﺘﺪﻫﺎ ﺟﻬﺖ ﺩﺭﺝ ﻣﺤﺼﻮﻻﺕ ﺑﻪ ﺩﯾﺘﺎﺑﻴﺲ ﻣﯽ ﺑﺎﺷﺪ ﺗﻮﺳﻂ ﮐﺪ :
;)_dataModel.AddToProducts (productToCreate
;)( _dataModel.SaveChanges
ﺣﺎﻝ ﺩﺭ ﮐﻨﺘﺮﻟﺮ Homeﻣﺎ ،ﺷﺎﻣﻞ ﻣﻬﻤﺘﺮﯾﻦ ﻭ ﻻﺯﻡ ﺗﺮﯾﻦ ﻣﻮﺍﺭﺩ ﻭ ﮐﺪﻫﺎی ﻣﺮﺑﻮﻁ ﺑﻪ ﺩﯾﺘﺎﺑﻴﺲ ﺍﺳﺖ .ﻣﺎ ﻣﯽ ﺗﻮﺍﻧﻴﻢ ﺍﺯ ﺍﯾﻦ ﮐﻨﺘﺮﻟﺮ
ﺑﺮﺍی ﺑﺎﺯﮔﺮﺩﺍﻧﯽ ﻣﺤﺼﻮﻻﺕ ﺍﺳﺘﻔﺎﺩﻩ ﻧﻤﺎﯾﻴﻢ .ﻫﻤﭽﻨﻴﻦ ﺍﺯ ﺍﯾﻦ ﮐﻨﺘﺘﺮﻟﺮ ﺑﺮﺍی ﺍﯾﺠﺎﺩ ﻣﺤﺼﻮﻻﺕ ﺟﺪﯾﺪ ﺍﺳﺘﻔﺎﺩﻩ ﻣﯽ ﻧﻤﺎﯾﻴﻢ.
ﺩﺭ ﻧﻬﺎﯾﺖ ﺍﯾﻦ ﺭﺍ ﺍﺿﺎﻓﻪ ﮐﻨﻢ ﮐﻪ ﻫﺮ ﺩﻭ ﺗﺎﺑﻊ ﻋﻤﻠﮕﺮ )( Indexﻭ )( Createﺟﻬﺖ ﻧﻤﺎﯾﺶ ﺩﺍﺩﻩ ﻫﺎی ﺩﺍﺧﻞ ﺩﯾﺘﺎﺑﻴﺲ ﺍﺳﺖ .ﺩﺭ
ﻣﺮﺣﻠﻪ ﺑﻌﺪ ﺍﯾﻦ ﻧﻤﺎﯾﺶ ﯾﺎ ﻫﻤﺎﻥ Viewsﺭﺍ ﺑﺎ ﻫﻢ ﺍﯾﺠﺎﺩ ﻣﯽ ﻧﻤﺎﯾﻴﻢ.
ﻧﻤﺎﯾﺸﮕﺮ ﻫﺎ ﺩﺭ MVCﺷﺎﻣﻞ ﺗﻤﺎﻣﯽ ﺗﮓ ﻫﺎی HTMLﻭ ﻧﻤﺎﯾﺸﮕﺮﻫﺎی ﻣﻨﻄﻘﯽ ﻻﺯﻡ ﺑﺮﺍی ﺍﯾﺠﺎﺩ Viewﻫﺎ ﺩﺭ ﺻﻔﺤﺎﺕ .HTML
ﺍﻟﺒﺘﻪ ﺍﯾﻦ ﻧﮑﺘﻪ ﺭﺍ ﻫﻢ ﺑﮕﻢ ﮐﻪ ﺷﻤﺎ ﺣﺘﻤﺎً ﻧﺒﺎﯾﺪ ﺑﺮﺍی ﻧﻤﺎﯾﺶ ﺍﺯ ﮐﺪ ﻫﺎ ﻭ ﺍﻟﻤﻨﺖ ﻫﺎی HTMLﺍﺳﺘﻔﺎﺩﻩ ﻧﻤﺎﯾﻴﺪ .ﺑﺮ ﻓﺮﺽ ﺷﻤﺎ ﻣﯽ
ﺗﻮﺍﻧﻴﺪ ﺍﺯ ﺗﮑﻨﻮﻟﻮژی ﺳﻴﻠﻮﺭﻻﯾﺖ ﺑﺮﺍی ﻇﺎﻫﺮ ﺍﺳﺘﻔﺎﺩﻩ ﻧﻤﺎﯾﻴﺪ.
ﺩﺭ ﻣﺜﺎﻝ ﭘﻴﺶ ﺭﻭ ﮐﻪ ﺗﺎ ﺑﻪ ﺣﺎﻝ ﺍﻧﺠﺎﻡ ﺩﺍﺩﻩ ﺍﯾﻢ ،ﻧﻴﺎﺯ ﺑﻪ ﺩﻭ ﺻﻔﺤﻪ ﺑﺮﺍی ﻧﻤﺎﯾﺶ ) ﯾﺎ ﻫﻤﺎﻥ ( VIEWﺩﺍﺭﯾﻢ .ﺻﻔﺤﻪ ﺍﻭﻝ ﯾﺎ ﻫﻤﺎﻥ
INDEXﻭ ﺻﻔﺤﻪ ﺍﯾﺠﺎﺩ ﯾﺎ ﻫﻤﺎﻥ . CREATEﻣﺎ ﺑﺮﺍی ﻧﻤﺎﯾﺶ ﻣﺤﺼﻮﻻﺕ ﺍﺯ INDEXﺍﺳﺘﻔﺎﺩﻩ ﻣﯽ ﮐﻨﻴﻢ ﻭ ﺑﺮﺍی ﺍﯾﺠﺎﺩ ﻣﺤﺼﻮﻻﺕ
ﺍﺯ ﺻﻔﺤﻪ CREATEﺍﺳﺘﻔﺎﺩﻩ ﻣﯽ ﻧﻤﺎﯾﻴﻢ.
ﺑﺮﺍی ﺷﺮﻭﻉ ﺑﻪ ﺍﯾﺠﺎﺩ ﮐﺮﺩﻥ ﺻﻔﺤﻪ INDEXﻣﯽ ﭘﺮﺩﺍﺯﯾﻢ .ﻣﺮﺍﺣﻞ ﺍﯾﻦ ﮐﺎﺭ ﺭﺍ ﺑﺎ ﻫﻢ ﺷﺮﻭﻉ ﻣﯽ ﮐﻨﻴﻢ:
FaEdu.irﮔﺮﻭﻩ ﺁﻣﻮﺯﺵ ﻓﺎﺭﺳﻲ ﺁﻣﻮﺯﺵ ﺑﻪ ﻫﻤﺮﺍﻩ ﭘﺮﻭژﻩ MVC.Net 28
- ١ﻗﺒﻞ ﺍﺯ ﻫﺮ ﭼﻴﺰ ﺑﻬﺘﺮ ﺍﺳﺖ ﺍﺑﺘﺪﺍ ﭘﺮﻭژﻩ ﺧﻮﺩ ﺭﺍ ﺑﺴﺎﺯﯾﻢ ) ﻣﻨﻈﻮﺭﻡ ﺩﺭ ﺍﯾﻨﺠﺎ ﻫﻤﻮﻥ BUILDﺍﺳﺖ( .ﺍﺯ ﻣﻨﻮی Buildﮔﺰﯾﻨﻪ
ﺍﻭﻝ ﮐﻪ ﻫﻤﺎﻥ Build Solutionﺍﺳﺖ ﺭﺍ ﺍﻧﺘﺨﺎﺏ ﻣﯽ ﻧﻤﺎﯾﻴﻢ .ﯾﺎ ﺍﺯ ﮐﻨﺘﺮﻝ ﻫﺎی ﺗﺮﮐﻴﺒﯽ CTRL+SHIFT+Bﺍﺳﺘﻔﺎﺩﻩ
ﻧﻤﺎﯾﻴﺪ.
- ٢ﺩﺭ ﺻﻔﺤﻪ HomeController.csﺍﺯ ﻗﺴﻤﺖ ﮐﺪﻫﺎی ﺍﯾﻦ ﺻﻔﺤﻪ ﺑﺮ ﺭﻭی ﺗﺎﺑﻊ )( Indexﺳﻤﺖ ﺭﺍﺳﺖ ﮐﻠﻴﮏ ﮐﺮﺩﻩ ﻭ ﺍﺯ
ﻣﻨﻮی ﻇﺎﻫﺮ ﺷﺪﻩ ﮔﺰﯾﻨﻪ Add Viewﺭﺍ ﺍﻧﺘﺨﺎﺏ ﻧﻤﺎﯾﻴﺪ ) .ﻣﻄﺎﺑﻖ ﺷﮑﻞ ﺯﯾﺮ (
- ٣ﭘﻨﺠﺮﻩ ﺍی ﻇﺎﻫﺮ ﻣﯽ ﺷﻮﺩ .ﺩﺭ ﺍﯾﻦ ﭘﻨﺠﺮﻩ ﺍﺑﺘﺪﺍ ﮔﺰﯾﻨﻪ ی Create a strongly-typed viewﺭﺍ ﺍﻧﺘﺨﺎﺏ ﻧﻤﺎﯾﻴﺪ.
- ۴ﺳﭙﺲ ﺍﺯ ﻗﺴﻤﺖ ﭘﺎﯾﻴﻦ ﯾﻌﻨﯽ view dataclassﮐﻪ ﻓﻌﺎﻝ ﺷﺪﻩ ﺍﺳﺖ ﮐﻼﺱ ToyStore.Models.Productﺭﺍ ﭘﻴﺪﺍ ﻭ
ﺍﻧﺘﺨﺎﺏ ﻧﻤﺎﯾﻴﺪ.
- ۵ﺳﭙﺲ ﺍﺯ ﻟﻴﺴﺖ ﺑﻌﺪی ﯾﻌﻨﯽ ﻗﺴﻤﺖ view contentﮔﺰﯾﻨﻪ Listﺭﺍ ﺍﻧﺘﺨﺎﺏ ﻧﻤﺎﯾﻴﺪ .ﻣﻄﺎﺑﻖ ﺷﮑﻞ ﺯﯾﺮ
ﺩﺭ ﻧﻬﺎﯾﺖ ﯾﮏ ﺳﺮی ﻓﺎﯾﻞ ﺑﻪ ﭘﺮﻭژﻩ ﺷﻤﺎ ﺍﺿﺎﻓﻪ ﻣﯽ ﺷﻮﺩ .ﮐﺎﻓﻴﺴﺖ ﭘﺮﻭژﻩ ﺭﺍ ﺍﺟﺮﺍ ﻧﻤﺎﯾﺪ ) F5ﺭﺍ ﺑﺰﻧﻴﺪ ( ﺑﺎ ﺗﺼﻮﯾﺮی ﻣﺸﺎﺑﻪ
ﺷﮑﻞ ﺯﯾﺮ ﺭﻭﺑﺮﻭ ﻣﯽ ﺷﻮﯾﺪ ﮐﻪ ﻣﺤﺘﻮﯾﺎﺕ ﺩﯾﺘﺎﺑﻴﺲ ﺷﻤﺎ ﺭﺍ ﻫﻤﺮﺍﻩ ﺑﺎ ﻣﺸﺨﺼﺎﺕ /ﺣﺬﻑ /ﻭﯾﺮﺍﯾﺶ /ﻭ ﺍﺿﺎﻓﻪ ﺍﺳﺖ.
ﮔﺮﻭﻩ ﺁﻣﻮﺯﺵ ﻓﺎﺭﺳﻲFaEdu.ir MVC.Net ﺁﻣﻮﺯﺵ ﺑﻪ ﻫﻤﺮﺍﻩ ﭘﺮﻭژﻩ 29
: ﺍﯾﺠﺎﺩ ﺷﺪﻩ ﺍﺳﺖHTML ﭼﻨﺎﻧﭽﻪ ﺑﻪ ﮐﺪﻫﺎی ﺍﯾﻦ ﺻﻔﺤﻪ ﻣﺮﺍﺟﻌﻪ ﻧﻤﺎﯾﻴﺪ ﻣﺘﻮﺟﻪ ﻣﯽ ﺷﻮﯾﺪ ﮐﻪ ﺍﯾﻦ ﺻﻔﺤﻪ ﺗﻮﺳﻂ ﺗﮓ ﻫﺎی
<h2>Index</h2>
<table>
<tr>
<th></th>
<th>
Id
</th>
<th>
Name
</th>
<th>
ﮔﺮﻭﻩ ﺁﻣﻮﺯﺵ ﻓﺎﺭﺳﻲFaEdu.ir MVC.Net ﺁﻣﻮﺯﺵ ﺑﻪ ﻫﻤﺮﺍﻩ ﭘﺮﻭژﻩ 30
Description
</th>
<th>
Price
</th>
</tr>
<tr>
<td>
<%: Html.ActionLink("Edit", "Edit", new { id=item.Id }) %> |
<%: Html.ActionLink("Details", "Details", new { id=item.Id })%> |
<%: Html.ActionLink("Delete", "Delete", new { id=item.Id })%>
</td>
<td>
<%: item.Id %>
</td>
<td>
<%: item.Name %>
</td>
<td>
<%: item.Description %>
</td>
<td>
<%: String.Format("{0:F}", item.Price) %>
</td>
</tr>
<% } %>
</table>
<p>
<%: Html.ActionLink("Create New", "Create") %>
</p>
</asp:Content>
.ﺍﯾﻦ ﺻﻔﺤﻪ ﺷﺎﻣﻞ ﻣﻮﺍﺭﺩ ﻣﺘﻔﺎﻭﺗﯽ ﺍﺳﺖ ﮐﻪ ﺑﻪ ﺑﺮﺭﺳﯽ ﻭ ﺍﯾﺠﺎﺩ ﺗﮏ ﺗﮏ ﺁﻧﻬﺎ ﺧﻮﺍﻫﻴﻢ ﭘﺮﺩﺍﺧﺖ
. ﯾﺎ ﻫﻤﺎﻥ ﺍﯾﺠﺎﺩ ﻣﺤﺼﻮﻝ ﺟﺪﯾﺪ ﺭﺍ ﺑﺎ ﻫﻢ ﺷﺮﻭﻉ ﺑﻪ ﺍﯾﺠﺎﺩ ﻣﯽ ﻧﻤﺎﯾﻴﻢCreate New ﺩﺭ ﺍﺑﺘﺪﺍ ﺻﻔﺤﻪ
: ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ ﻣﺮﺍﺣﻞ ﺯﯾﺮ ﺑﻪ ﺳﺎﺧﺖ ﻃﺮﺍﺣﯽ ﺍﯾﻦ ﺻﻔﺤﻪ ﻣﯽ ﭘﺮﺩﺍﺯﯾﻢ.ﺑﺮﺍی ﺍﯾﺠﺎﺩ ﻣﺤﺼﻮﻝ ﺟﺪﯾﺪ ﻣﺎ ﺑﻪ ﺍﯾﻦ ﺻﻔﺤﻪ ﻧﻴﺎﺯ ﺩﺍﺭﯾﻢ
ﺳﻤﺖ ﺭﺍﺳﺖ ﮐﻠﻴﮏ ﮐﺮﺩﻩ ﻭ ﺍﺯ ﻣﻨﻮی ﺑﺎﺯCreate() ﺑﺮ ﺭﻭی ﺗﺎﺑﻊHomeController.cs ﺩﺭ ﺻﻔﺤﻪ، ﻣﻄﺎﺑﻖ ﻣﺮﺣﻠﻪ ﻗﺒﻞ- ١
. ﺭﺍ ﺍﻧﺘﺨﺎﺏ ﻣﯽ ﻧﻤﺎﯾﻴﻢAdd View ﺷﺪﻩ ﮔﺰﯾﻨﻪ
FaEdu.irﮔﺮﻭﻩ ﺁﻣﻮﺯﺵ ﻓﺎﺭﺳﻲ ﺁﻣﻮﺯﺵ ﺑﻪ ﻫﻤﺮﺍﻩ ﭘﺮﻭژﻩ MVC.Net 31
- ٢ﭘﻨﺠﺮﻩ ﺍی ﻇﺎﻫﺮ ﻣﯽ ﺷﻮﺩ .ﺩﺭ ﺍﯾﻦ ﭘﻨﺠﺮﻩ ﺍﺑﺘﺪﺍ ﮔﺰﯾﻨﻪ ی Create a strongly-typed viewﺭﺍ ﺍﻧﺘﺨﺎﺏ ﻧﻤﺎﯾﻴﺪ.
- ٣ﺳﭙﺲ ﺍﺯ ﻗﺴﻤﺖ ﭘﺎﯾﻴﻦ ﯾﻌﻨﯽ view dataclassﮐﻪ ﻓﻌﺎﻝ ﺷﺪﻩ ﺍﺳﺖ ﮐﻼﺱ ToyStore.Models.Productﺭﺍ ﭘﻴﺪﺍ ﻭ
ﺍﻧﺘﺨﺎﺏ ﻧﻤﺎﯾﻴﺪ.
- ۴ﺳﭙﺲ ﺍﺯ ﻟﻴﺴﺖ ﺑﻌﺪی ﯾﻌﻨﯽ ﻗﺴﻤﺖ view contentﮔﺰﯾﻨﻪ Createﺭﺍ ﺍﻧﺘﺨﺎﺏ ﻧﻤﺎﯾﻴﺪ .ﻣﻄﺎﺑﻖ ﺷﮑﻞ ﺯﯾﺮ
ﺍﯾﻦ ﺻﻔﺤﻪ ﻧﻴﺰ ﺑﻪ ﺻﻮﺭﺕ ﺍﺗﻮﻣﺎﺗﻴﮏ ﺍﯾﺠﺎﺩ ﻣﯽ ﺷﻮﺩ ﻭ ﻣﺤﻞ ﺁﻥ ﺩﺭ \View\Home\Create.aspxﺍﺳﺖ .ﻣﺎﻧﻨﺪ ﺷﮑﻞ ﺯﯾﺮ
ﮔﺮﻭﻩ ﺁﻣﻮﺯﺵ ﻓﺎﺭﺳﻲFaEdu.ir MVC.Net ﺁﻣﻮﺯﺵ ﺑﻪ ﻫﻤﺮﺍﻩ ﭘﺮﻭژﻩ 32
<h2>Create</h2>
<fieldset>
<legend>Fields</legend>
<div class="editor-label">
<%: Html.LabelFor(model => model.Id) %>
</div>
<div class="editor-field">
<%: Html.TextBoxFor(model => model.Id) %>
<%: Html.ValidationMessageFor(model => model.Id) %>
</div>
<div class="editor-label">
<%: Html.LabelFor(model => model.Name) %>
</div>
<div class="editor-field">
<%: Html.TextBoxFor(model => model.Name) %>
<%: Html.ValidationMessageFor(model => model.Name) %>
</div>
<div class="editor-label">
<%: Html.LabelFor(model => model.Description) %>
</div>
<div class="editor-field">
<%: Html.TextBoxFor(model => model.Description) %>
<%: Html.ValidationMessageFor(model => model.Description) %>
</div>
<div class="editor-label">
<%: Html.LabelFor(model => model.Price) %>
</div>
<div class="editor-field">
<%: Html.TextBoxFor(model => model.Price) %>
<%: Html.ValidationMessageFor(model => model.Price) %>
</div>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
FaEdu.irﮔﺮﻭﻩ ﺁﻣﻮﺯﺵ ﻓﺎﺭﺳﻲ ﺁﻣﻮﺯﺵ ﺑﻪ ﻫﻤﺮﺍﻩ ﭘﺮﻭژﻩ MVC.Net 33
><% } %
><div
><%: Html.ActionLink("Back to List", "Index") %
></div
></asp:Content
ﻧﺘﻴﺠﻪ ﮔﻴﺮﻱ
ﺩﺭ ﺍﯾﻦ ﺑﺨﺶ ﻣﺎ ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺗﮑﻨﻮﻟﻮژِی ASP.NET MVCﯾﮏ ﭘﺮﻭژﻩ ﺳﺎﺩﻩ ﻫﻤﺮﺍﻩ ﺑﺎ ﺩﯾﺘﺎﺑﻴﺲ ﺭﺍ ﺍﯾﺠﺎﺩ ﮐﺮﺩﯾﻢ ..ﻫﻤﭽﻨﻴﻦ Model,
Viewﻭ Controllersﺭﺍ ﺍﯾﺠﺎﺩ ﮐﺮﺩﯾﻢ.
ﺩﺭ ﺍﺑﺘﺪﺍ ﻣﺎ ﯾﮏ ﺩﯾﺘﺎﺑﻴﺲ ﺑﻪ ﻫﻤﺮﺍﻩ ﻣﺪﻝ ﭘﺎﯾﮕﺎﻩ ﺩﺍﺩﻩ ﺭﺍ ﺍﯾﺠﺎﺩ ﮐﺮﺩﯾﻢ .ﺑﺮﺍی ﺍﯾﻦ ﮐﺎﺭ ﺍﺯ Microsoft SQL Server Expressﺍﺳﺘﻔﺎﺩﻩ
ﮐﺮﺩﯾﻢ .ﻭ ﺑﺮﺍی ﺍﯾﺠﺎﺩ ﮐﻼﺱ ﻫﺎ ﺍﺯ Microsoft Entity Frameworkﺍﺳﺘﻔﺎﺩﻩ ﻧﻤﻮﺩﯾﻢ.
ﺩﺭ ﻣﺮﺣﻠﻪ ﺑﻌﺪ ﻣﺎ ﮐﻨﺘﺮﻝ ﻫﺎی ﺻﺤﻪ ﺍﻭﻝ ﺭﺍ ﺍﯾﺠﺎﺩ ﮐﺮﺩﯾﻢ .ﺑﺮﺍی ﺍﯾﻦ ﮐﺎﺭ ﻧﻴﺰ ﺍﺯ ﻭﺍﯾﺰﺍﺭﺩ ﻭﯾﮋﻭﺍﻝ ﺍﺳﺘﻮﺩﯾﻮ ﺍﺳﺘﻔﺎﺩﻩ ﮐﺮﺩﯾﻢ ﺗﺎ ﺑﻪ ﺻﻮﺭﺕ
ﺍﺗﻮﻣﺎﺗﻴﮏ ﺍﯾﺠﺎﺩ ﻧﻤﺎﯾﺪ .ﻫﻤﭽﻨﻴﻦ ﯾﮏ ﺳﺮی ﮐﺪ ﺑﺮﺍی ﺩﺳﺘﺮﺳﯽ ﻣﻨﻄﻘﯽ ﺑﻪ ﺩﯾﺘﺎﺑﻴﺲ ﺭﺍ ﻧﻮﺷﺘﻴﻢ.
ﻭ ﺩﺭ ﻧﻬﺎﯾﺖ ﻣﺎ ﺩﻭ ﻧﻤﺎﯾﺶ ﺳﺎﺧﺘﻴﻢ ﯾﮑﯽ ﺑﺮﺍی ﻧﻤﺎﯾﺶ ﻣﺤﺼﻮﻻﺕ ﻭ ﺩﯾﮕﺮی ﺑﺮﺍی ﺍﺿﺎﻓﻪ ﮐﺮﺩﻥ ﻣﺤﺼﻮﻝ.
ﺩﺭ ﭘﺎﯾﺎﻥ ﺍﺯ ﺷﻤﺎ ﺩﻭﺳﺘﺎﻥ ﻣﯽ ﺧﻮﺍﻫﻢ ﭼﻨﺎﻧﭽﻪ ﻧﻈﺮ ﯾﺎ ﺍﻧﺘﻘﺎﺩی ﺩﺭﺑﺎﺭﻩ ﺍﯾﻦ ﻣﻄﺎﻟﺐ ﺩﺍﺭﯾﺪ ﺣﺘﻤﺎً ﺑﺎ ﺑﻨﺪﻩ ﺩﺭ ﻣﻴﺎﻥ ﺑﮕﺬﺍﺭﯾﺪ.
Farjadp@live.com
U U faedu.ir@gmail.com
U U ﻣﺮﺗﻀﯽ ﭘﻮﺭﻣﺤﻤﺪ 0912 – 283 0 795
* ﺍﯾﺠﺎﺩ ﮐﻨﺘﺮﻟﺮ
ﻓﺼﻞ ﺍﻭﻝ
*
ﺑﺨﺶ ﺳﻮﻡ
ﮐﻨﺘﺮﻟﺮ ﻫﺎی ASP.Net MVCﻣﺴﺌﻮﻝ ﮐﻨﺘﺮﻝ ﮐﺮﺩﻥ ﺑﺮﻧﺎﻣﻪ ﻫﺎی ﺍﺟﺮﺍﯾﯽ ﻫﺴﺘﻨﺪ .ﻫﻨﮕﺎﻣﻴﮑﻪ ﺷﻤﺎ ﺑﻪ ﻣﺮﻭﺭﮔﺮ ﺧﻮﺩ ﯾﮏ ﺩﺭﺧﻮﺍﺳﺖ
ﺑﺮﺍی ﺩﺭﯾﺎﻓﺖ ﯾﮏ ﺻﻔﺤﻪ MVCﻣﯽ ﮐﻨﻴﺪ ،ﮐﻨﺘﺮﻟﺮ ﻣﺴﺌﻮﻝ ﺑﺮﮔﺮﺩﺍﻧﺪﻥ ﭘﺎﺳﺦ ﺑﻪ ﺩﺭﺧﻮﺍﺳﺖ ﺷﻤﺎ ﻣﯽ ﺑﺎﺷﺪ.
ﮐﻨﺘﺮﻟﺮ ﻫﺎ ﻣﻌﻤﻮﻻً ﯾﮏ ﻋﻤﻞ ﯾﺎ ﺑﻴﺸﺘﺮ ﺭﺍ ﺍﻧﺠﺎﻡ ﻣﯽ ﺩﻫﻨﺪ .ﻋﻤﻞ ﮐﻨﺘﺮﻟﺮ ﻫﺎ ﻣﯽ ﺗﻮﺍﻧﺪ ﺍﻧﻮﺍﻉ ﻣﺨﺘﻠﻔﯽ ﺭﺍ ﺍﺯ ﺍﻧﻮﺍﻉ ﻣﺘﻔﺎﻭﺗﯽ ﻧﺘﺎﯾﺞ ﺑﻪ
ﻣﺮﻭﺭﮔﺮ ﺑﺮﮔﺮﺩﺍﻧﺪ .ﺑﻪ ﻋﻨﻮﺍﻥ ﻣﺜﺎﻝ ﯾﮏ ﮐﻨﺘﺮﻟﺮ ﻣﯽ ﺗﻮﺍﻧﺪ ﯾﮏ ﻧﻤﺎﯾﺸﮕﺮ ﯾﺎ ﻫﻤﺎﻥ viewﺭﺍ ﺑﻪ ﻣﺮﻭﺭﮔﺮ ﺑﺮﮔﺮﺩﺍﻧﺪ ﻭ ﯾﺎ ﻓﺎﯾﻠﯽ ﺭﺍ ﺑﺮﮔﺮﺩﺍﻧﺪ
ﻭ ﯾﺎ ﺣﺘﯽ ﻣﯽ ﺗﻮﺍﻧﺪ ﺷﻤﺎ ﺭﺍ ﺑﻪ ﮐﻨﺘﺮﻟﺮ ﺩﯾﮕﺮی ﺍﺭﺟﺎﻉ ﺩﻫﺪ.
ﺩﺭ ﺍﯾﻦ ﻓﺼﻞ ﺑﻪ ﺷﻤﺎ ﯾﺎﺩ ﻣﻴﺪﻫﻢ ﭼﻄﻮﺭ ﺍﺯ ﮐﻨﺘﺮﻟﺮﻫﺎ ﻭ ﻧﺤﻮﻩ ﻋﻤﻞ ﮐﺮﺩﻥ ﺁﻧﻬﺎ ﺍﺳﺘﻔﺎﺩﻩ ﻧﻤﺎﯾﻴﺪ .ﺷﻤﺎ ﯾﺎﺩ ﻣﻴﮕﻴﺮﯾﺪ ﭼﻄﻮﺭ ﺍﺯ ﻧﺘﺎﯾﺞ
ﻋﻤﻠﻴﺎﺗﯽ ﮐﻨﺘﺮﻟﺮ ﻫﺎ ،ﻣﺪﻝ ﻫﺎی ﻣﺨﺘﻠﻒ ﮐﻨﺘﺮﻟﺮ ﺭﺍ ﺑﺮﮔﺮﺩﺍﻧﻴﺪ .ﻭ ﯾﺎ ﺣﺘﯽ ﭼﮕﻮﻧﻪ ﺍﺯ ﺧﻮﺍﺹ ﮐﻨﺘﺮﻟﺮ ﻫﺎ ﺍﺳﺘﻔﺎﺩﻩ ﻧﻤﺎﯾﻴﺪ.
ﺭﺍﺣﺖ ﺗﺮﯾﻦ ﺭﺍﻩ ﺑﺮﺍی ﺍﯾﺠﺎﺩ ﯾﮏ ﮐﻨﺘﺮﻟﺮ ﺍﯾﻦ ﺍﺳﺖ ﮐﻪ ﺑﺮ ﺭﻭی ﻓﻮﻟﺪﺭ controllerﺳﻤﺖ ﺭﺍﺳﺖ ﮐﻠﻴﮏ ﮐﺮﺩﻩ ﻭ ﺍﺯ ﻣﻨﻮی ﻇﺎﻫﺮ ﺷﺪﻩ
ﮔﺰﯾﻨﻪ Add>Controllerﺭﺍ ﺍﻧﺘﺨﺎﺏ ﻧﻤﺎﯾﻴﺪ ﻭ ﺳﭙﺲ ﻧﺎﻣﯽ ﺭﺍ ﺑﺮﺍی ﮐﻨﺘﺮﻟﺮ ﺧﻮﺩ ﺍﻧﺘﺨﺎﺏ ﻧﻤﺎﯾﻴﺪ .ﺑﻨﺪﻩ ﺩﺭ ﺍﯾﻨﺠﺎ ﻧﺎﻡ
ProductControllerﺭﺍ ﺍﻧﺘﺨﺎﺏ ﮐﺮﺩﻩ ﺍﻡ .ﻣﻄﺎﺑﻖ ﺷﮑﻞ
ﺑﻌﺪ ﺍﺯ ﺍﯾﻨﮑﻪ ﺑﺮ ﺭﻭی ﺩﮐﻤﻪ Addﮐﻠﻴﮏ ﮐﻨﻴﺪ ﺻﻔﺤﻪ ﺍی ﻣﺸﺎﻫﺪﻩ ﻣﯽ ﮐﻨﻴﺪ ﮐﻪ ﺣﺎﻭی ﮐﺪﻫﺎی ﺯﯾﺮ ﺍﺳﺖ:
using ;System
using ;System.Collections.Generic
using ;System.Linq
using ;System.Web
using ;System.Web.Mvc
namespace ToyStore.Controllers
{
public class ProductController : Controller
{
//
// GET: /Product/
}
}
ﺗﻮﺟﻪ ﮐﻨﻴﺪ ﮐﻪ ﺍﯾﻦ ﮐﻨﺘﺮﻟﺮ ﺗﻨﻬﺎ ﮐﻼﺳﯽ ﺍﺳﺖ ﮐﻪ ﺍﺯ ﮐﻼﺱ ﭘﺎﯾﻪ ی System.Web.Mvc.Controllerﻭﺭﺍﺛﺖ ﺩﺍﺭﺩ ) ﯾﺎ ﺑﻪ ﺍﺭﺙ ﺑﺮﺩﻩ
ﺍﺳﺖ (.
ﺗﻤﺎﻣﯽ ﻣﺘﺪﻫﺎی ﻋﻤﻮﻣﯽ ﻇﺎﻫﺮ ﺷﺪﻩ ﺗﻮﺳﻂ ﮐﻨﺘﺮﻟﺮ ﻫﺎ ﺗﻮﺳﻂ ﺍﻋﻤﺎﻝ ﮐﻨﺘﺮﻟﺮ ﻧﻤﺎﯾﺎﻥ ﻣﯽ ﺷﻮﻧﺪ .ﺩﺭ ﮐﺪ ﻫﺎی ﺑﺎﻻ ﮐﻼﺱ ﻫﺎی
ﮐﻨﺘﺮﻟﯽ ﺩﺭ ﻣﺘﺪ )( indexﻧﻤﺎﯾﺎﻥ ﻣﯽ ﺷﻮﻧﺪ .ﻣﺘﺪ ﻋﻤﻠﻴﺎﺗﯽ )( indexﺑﻪ ﺻﻮﺭﺕ ﭘﻴﺸﻔﺮﺽ ﮐﻨﺘﺮﻟﺮ ﺭﺍ ﻓﺮﺍﺧﻮﺍﻧﯽ ﻣﯽ ﮐﻨﺪ ﻭﻗﺘﻴﮑﻪ
ﻫﻴﭽﮕﻮﻧﻪ ﺩﺳﺘﻮﺭ ﺻﺮﯾﺤﯽ ﺑﺮﺍی ﺍﺟﺮﺍ ﻭﺟﻮﺩ ﻧﺪﺍﺷﺘﻪ ﺑﺎﺷﺪ.
ﺑﻪ ﻃﻮﺭ ﮐﻠﯽ ﮐﻨﺘﺮﻟﺮ ﻫﺎی ﻋﻤﻠﻴﺎﺗﯽ ﻣﻌﻤﻮﻻً ﻧﺘﺎﯾﺞ ﻋﻤﻠﻴﺎﺗﯽ ﺭﺍ ﺑﺮ ﻣﯽ ﮔﺮﺩﺍﻧﻨﺪ .ﺍﯾﻦ ﻧﺘﺎﯾﺞ ﻋﻤﻠﻴﺎﺗﯽ ﺗﻮﺳﻂ ﺩﺭﺧﻮﺍﺳﺘﯽ ﮐﻪ ﺗﻮﺳﻂ
ﻣﺮﻭﺭﮔﺮ ﻣﯽ ﺑﺎﺷﺪ ﺑﺎﺯ ﮔﺮﺩﺍﻧﺪﻩ ﻣﯽ ﺷﻮﻧﺪ .ﯾﮏ ﮐﻨﺘﺮﻟﺮ ﮐﺎﻣﻞ ﻣﯽ ﺗﻮﺍﻧﺪ ﻋﻤﻠﻴﺎﺕ ﻫﺎی ﻣﺘﻌﺪﺩی ﺭﺍ ﺩﺭ ﺧﻮﺩ ﺟﺎی ﺩﻫﺪ ﻭ ﺍﻧﺠﺎﻡ ﺩﻫﺪ.
ﺑﻪ ﻋﻨﻮﺍﻥ ﻣﺜﺎﻝ ﻫﻤﻴﻦ ﺻﻔﺤﻪ ﺍی ﺭﺍ ﮐﻪ ﺍﯾﺠﺎﺩ ﮐﺮﺩﻩ ﺍﯾﻢ ﮐﻤﯽ ﺗﻐﻴﻴﺮ ﻣﯽ ﺩﻫﻴﻢ ﻭ ﺳﻪ ﻧﻮﻉ ﻋﻤﻠﻴﺎﺕ ﺭﺍ ﺩﺭ ﺁﻥ ﻣﯽ ﻧﻮﯾﺴﻴﻢ.
;using System.Web.Mvc
namespace ToyStore.Controllers
{
public class ProductController : Controller
{
//
// GET: /Product/
//
// GET : /Product/HELP
)(public ActionResult Help
{
;)(return View
}
//
// GET: /Details/1
)public ActionResult Details(int Id
{
;)(return View
}
}
}
ﺣﺎﻝ ﺷﻤﺎ ﻣﯽ ﺗﻮﺍﻧﻴﺪ ﺍﻋﻤﺎﻝ ﻣﺨﺘﻠﻔﯽ ﺭﺍ ﺩﺭ ﺁﺩﺭﺱ ﺑﺎﺭ ﻣﺮﻭﺭﮔﺮ ﺧﻮﺩ ﺗﺎﯾﭗ ﻧﻤﺎﯾﻴﺪ ،ﻣﺎﻧﻨﺪ:
: /Productﺑﺮﺍی ﻓﺮﺍﺧﻮﺍﻧﯽ ProductControllerﺍﺯ ﺗﺎﺑﻊ )( - Indexﺍﻟﺒﺘﻪ ﺍﯾﻦ ﺭﺍ ﺑﮕﻮﯾﻢ ﻫﻴﭻ ﻓﺮﻗﯽ ﺑﻴﻦ ﺍﯾﻦ ﻓﺮﻣﺎﻥ ﻭ ﻓﺮﻣﺎﻥ
ﺑﺎﻻﯾﯽ ﻭﺟﻮﺩ ﻧﺪﺍﺭﺩ.
FaEdu.irﮔﺮﻭﻩ ﺁﻣﻮﺯﺵ ﻓﺎﺭﺳﻲ ﺁﻣﻮﺯﺵ ﺑﻪ ﻫﻤﺮﺍﻩ ﭘﺮﻭژﻩ MVC.Net 37
: /Product/Details/4ﺑﺮﺍی ﻓﺮﺍﺧﻮﺍﻧﯽ ﺻﻔﺤﻪ Viewﻣﺸﺨﺼﺎﺕ ﯾﮏ ﻣﺤﺼﻮﻝ ﮐﻪ ﺩﺭ ﺍﯾﻨﺠﺎ ﺑﻪ ﻋﻨﻮﺍﻥ ﻣﺜﺎﻝ ﻣﺤﺼﻮﻟﯽ ﮐﻪ ﺷﻤﺎﺭﻩ
۴ﺭﺍ ﺩﺍﺭﺩ ﻧﺸﺎﻥ ﻣﯽ ﺩﻫﺪ.
ﺍﯾﻦ ﺍﻟﮕﻮی ﻓﺮﺍﺧﻮﺍﻧﯽ ﺑﻪ ﺻﻮﺭﺕ ﭘﻴﺶ ﻓﺮﺽ ﺩﺭ ﻓﺎﯾﻞ Global.aspxﺗﻌﺮﯾﻒ ﻣﯽ ﺷﻮﺩ .ﺷﻤﺎ ﺑﺎ ﭘﻴﺪﺍ ﮐﺮﺩﻥ ﺍﯾﻦ ﺍﻟﮕﻮ ﻣﯽ ﺗﻮﺍﻧﻴﺪ
ﻣﻄﺎﺑﻖ ﺑﺎ ﺳﻠﻴﻘﻪ ﺧﻮﺩ ﺁﻥ ﺭﺍ ﺗﻐﻴﻴﺮ ﺩﻫﻴﺪ ) .ﺧﻮﺩﻡ ﻫﻨﻮﺯ ﺑﻠﺪ ﻧﻴﺴﺘﻢ ﺑﺎ ﺍﯾﻦ ﻣﻮﺭﺩ ﮐﺎﺭ ﮐﻨﻢ .ﺩﺭ ﻓﺼﻞ ﻫﺎی ﺁﯾﻨﺪﻩ ﺣﺘﻤًﺎ ﮐﺎﺭ ﺑﺎ ﺍﯾﻦ
ﺻﻔﺤﻪ ﻭ ﻣﻮﺍﺭﺩ ﺁﻥ ﺭﺍ ﯾﺎﺩ ﺧﻮﺍﻫﻢ ﮔﺮﻓﺖ ﻭ ﺩﺭ ﺍﺧﺘﻴﺎﺭ ﺷﻤﺎ ﺩﻭﺳﺘﺎﻥ ﻗﺮﺍﺭ ﻣﯽ ﺩﻫﻢ (
ﺍﻟﺒﺘﻪ ﺍﯾﻦ ﺭﺍ ﻫﻢ ﺍﺿﺎﻓﻪ ﻣﯽ ﮐﻨﻢ ﻭﻗﺘﯽ ﯾﮏ ﮐﻨﺘﺮﻟﺮ ﺭﺍ ﻓﺮﺍﺧﻮﺍﻧﯽ ﻣﯽ ﮐﻨﻴﻢ ،ﻣﺮﻭﺭﮔﺮ ﺁﻥ ﮐﻨﺘﺮﻟﺮ ﺭﺍ ﺑﺪﻭﻥ ﭘﻴﺸﻮﻧﺪ ﺑﻪ ﻧﻤﺎﯾﺶ ﺩﺭ ﻣﯽ
ﺁﻭﺭﺩ .ﯾﻌﻨﯽ ﭘﺴﻮﻧﺪ .aspxﺭﺍ ﻧﺸﺎﻥ ﻧﻤﯽ ﺩﻫﺪ.
ﭘﻴﺸﻔﺮﺽ ﺗﻤﺎﻣﯽ ﻓﺮﺍﻣﻴﻦ )( indexﻣﯽ ﺑﺎﺷﺪ .ﯾﻌﻨﯽ ﺷﻤﺎ ﻭﻗﺘﯽ ﯾﮏ ﮐﻨﺘﺮﻟﺮ ﺭﺍ ﻓﺮﺍﺧﻮﺍﻧﯽ ﻣﯽ ﮐﻨﻴﺪ ﺩﺭ ﺍﺑﺘﺪﺍ ﺗﺎﺑﻊ )( Indexﺭﺍ
ﻧﻤﺎﯾﺶ ﻣﯽ ﺩﻫﺪ.
ﯾﮏ ﮐﻨﺘﺮﻟﺮ ﻣﻌﻤﻮﻻ ﺭﺧﺪﺍﺩ ActionResultﺭﺍ ﺑﺮ ﻣﯽ ﮔﺮﺩﺍﻧﺪ .ﻓﺮﯾﻤﻮﺭک ASP Net MVCﺷﺎﻣﻞ ﺍﻧﻮﺍﻉ ﻣﺨﺘﻠﻔﯽ ﺍﺯ ﺍﯾﻦ ﻧﺘﺎﯾﺞ ﺭﺧﺪﺍﺩ ﯾﺎ
ﻫﻤﺎﻥ ActionResultﻣﯽ ﺑﺎﺷﺪ:
ﺩﺭ ﻧﻬﺎﯾﺖ ﺷﻤﺎ ﻧﻤﯽ ﺗﻮﺍﻧﻴﺪ ﺑﻪ ﺻﻮﺭﺕ ﻣﺴﺘﻘﻴﻢ ﺍﯾﻦ ActionResultﻫﺎ ﺭﺍ ﺍﺯ ﮐﻨﺘﺮﻟﺮ ﺑﺎﺯﮔﺮﺩﺍﻧﻴﺪ ) ﯾﺎ ﻧﻤﺎﯾﺶ ﺩﻫﻴﺪ ( ﺩﺭ ﻋﻮﺽ ﺷﻤﺎ
ﻣﯽ ﺑﺎﯾﺴﺖ ﻣﺘﺪﻫﺎی ﺍﯾﻦ ﮐﻨﺘﺮﻟﺮ ﻫﺎ ﺭﺍ ﺍﺯ ActionResultﺑﺮﮔﺮﺩﺍﻧﻴﺪ .ﺩﺭ ﺯﯾﺮ ﻟﻴﺴﺘﯽ ﺍﺯ ﺍﯾﻦ ﻣﺘﺪﻫﺎ ﺭﺍ ﺑﺮﺍی ﺷﻤﺎ ﺑﺎﺯﮔﻮ ﻣﯽ ﮐﻨﻢ.
. ﻣﯽ ﺑﺎﺷﺪMVC ﻫﺎ ﺩﺭView ﺟﻬﺖ ﻧﻤﺎﺵViewResult . ﮐﻪ ﯾﮏ ﮐﻨﺘﺮﻟﺮ ﺩﺍﺭﺩActionResult ﺭﺍﯾﺞ ﺗﺮﯾﻦ ﻧﻮﻉViewResult
. ﺁﻥ ﺻﻔﺤﻪ ﺭﺍ ﺑﺮﮔﺮﺩﺍﻧﺪﻩ ﺍﯾﺪViewResult ﺭﺍ ﺩﺭ ﻣﺮﻭﺭﮔﺮ ﺧﻮﺩ ﻓﺮﺍﺧﻮﺍﻧﯽ ﻣﯽ ﮐﻨﻴﺪ ﺩﺭ ﺣﻘﻴﻘﺖHTML ﻫﻨﮕﺎﻣﻴﮑﻪ ﺷﻤﺎ ﯾﮏ ﺻﻔﺤﻪ
ﻣﯽCustomerController ﺍﺿﺎﻓﻪ ﻣﯽ ﮐﻨﻴﻢ ﻭ ﻧﺎﻡ ﺁﻥ ﺭﺍControllers ﻣﻄﺎﺑﻖ ﺁﻧﭽﻪ ﺩﺭ ﻗﺒﻞ ﮔﻔﺘﻴﻢ ﯾﮏ ﮐﻨﺘﺮﻟﺮ ﺟﺪﯾﺪ ﺑﻪ ﻓﻮﻟﺪﺭ
.ﻧﺎﻣﻴﻢ
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace Faedu.Controllers
{
public class CustomerController : Controller
{
//
// GET: /Customer/
}
}
ﺩﺭ ﺍﯾﻨﺠﺎ ﻣﺘﺪ )( Detailsﺍﺯ ﻃﺮﯾﻖ ﻣﺘﺪ )( Viewﻧﺘﺎﯾﺞ ﺑﺎﺯﮔﺸﺘﯽ ViewResultﺭﺍ ﺑﺮ ﻣﯽ ﮔﺮﺩﺍﻧﺪ.
ﺩﺭ ﺍﯾﻨﺠﺎ ﺑﺮﺍی ﺍﯾﻨﮑﻪ ﺑﺘﻮﺍﻧﻴﺪ ﺻﻔﺤﻪ ﻣﻮﺭﺩ ﻧﻈﺮ ﺭﺍ ﻧﻤﺎﯾﺶ ﺩﻫﻴﺪ ) ﻭﻗﺘﯽ ﮐﻪ ﻣﺘﺪ )( viewﺭﺍ ﻓﺮﺍﺧﻮﺍﻧﯽ ﮐﺮﺩﯾﺪ( ﺩﻭ ﺭﺍﻩ ﺩﺍﺭﯾﺪ
ﺩﺭ ﮐﺪﻫﺎی ﺑﺎﻻ ﻣﺎ ﺑﻪ ﻃﻮﺭ ﻣﺴﺘﻘﻴﻢ ﺍﯾﻦ ﮐﺎﺭ ﺭﺍ ﺍﻧﺠﺎﻡ ﺩﺍﺩﯾﻢ .ﺩﺭ ASP.NET MVC frameworkﺗﻌﻴﻴﻦ ﮐﻨﻨﺪﻩ ﺍﯾﻦ ﺟﺮﯾﺎﻥ ﻧﺎﻡ
ﻧﻤﺎﯾﺸﻦ ﺩﻫﻨﺪﻩ ﺍی ﮐﻪ ﺍﺯ ﻧﺎﻡ ﻣﺘﺪ ﮔﺮﻓﺘﻪ ﺷﺪﻩ ﺍﺳﺖ ،ﻣﯽ ﺑﺎﺷﺪ) ﻣﻴﺪﻭﻧﻢ ﺧﻴﻠﯽ ﭘﻴﭽﻴﺪﻩ ﺷﺪ .ﺯﺑﻮﻥ ﺧﻮﺩﻣﻮﻧﯽ :ﻫﺮﭼﯽ ﺍﮐﺸﻦ
ﻣﺘﺪ ﺑﮕﻪ ﻫﻤﻮﻥ ﺭﻭ ﻧﺎﻣﮕﺬﺍﺭی ﻣﯽ ﮐﻨﻪ ( ﺩﺭ ﺍﯾﻦ ﺭﻭﺵ ﻧﻤﺎﯾﺶ ﺩﻫﻨﺪﻩ ﺑﺮ ﺍﺳﺎﺱ ﻣﮑﺎﻥ ﻓﺎﯾﻞ ﻣﯽ ﺑﺎﺷﺪ:
Views\Customer\Details.aspx
ﻫﻤﺎﻧﻄﻮﺭ ﮐﻪ ﺍﺯ ﺁﺩﺭﺱ ﺑﺎﻻ ﻣﻌﻠﻮﻡ ﺍﺳﺖ ASP.NET MVC frameworkﺑﺮ ﺍﺳﺎﺱ ﺍﻟﮕﻮی ﺯﯾﺮ ﻧﺎﻣﮕﺬﺍﺭی ﺭﺍ ﺍﻧﺠﺎﻡ ﻣﯽ ﺩﻫﺪ:
ﺍﮔﺮ ﺷﻤﺎ ﺍﯾﻦ ﺭﺍﻩ ﺭﺍ ﺗﺮﺟﻴﺢ ﻣﯽ ﺩﻫﻴﺪ ﮐﻪ ﻫﻴﭻ ﻭﻟﯽ ﺍﮔﺮ ﻣﯽ ﺧﻮﺍﻫﻴﺪ ﺭﻭﺵ ﺩﻭﻡ ﺭﺍ ﻧﻴﺰ ﺗﺴﺖ ﮐﻨﻴﺪ ﻣﯽ ﺗﻮﺍﻧﻴﺪ ﺍﺩﺍﻣﻪ ﻣﻄﻠﺐ ﺭﺍ
ﺑﺨﻮﺍﻧﻴﺪ!!!! :ﺩی
. . . .
. . . . .
. . . . . .
public class CustomerController : Controller
{
//
// GET: /Customer/
}
}
ﺧﻴﻠﯽ ﻭﺍﺿﺢ ﻫﺴﺘﺶ .ﻓﻘﻂ ﺍﯾﻨﻮ ﺍﺿﺎﻓﻪ ﮐﻨﻢ ﺍﯾﻦ ﺭﻭﺵ ﺑﺮﺍی ﻣﻮﻗﻌﯽ ﺧﻮﺑﻪ ﮐﻪ ﺷﻤﺎ ﻣﯽ ﺧﻮﺍﯾﺪ ﺁﺩﺭﺱ ﮐﺎﻣﻞ ﺭﻭ ﻫﻤﺮﺍﻩ ﺑﺎ
ﻣﻮﻗﻌﻴﺖ ﻓﻮﻟﺪﺭ ﻫﺎ ﺩﺍﺷﺘﻪ ﺑﺎﺷﻴﺪ .ﺑﻬﺘﻮﻥ ﭘﻴﺸﻨﻬﺎﺩ ﻣﯽ ﮐﻨﻢ ﺩﻭ ﺗﺎ ﺭﻭﺵ ﺭﻭ ) ﮐﻪ ﺟﻔﺘﺸﻮﻥ ﻫﻢ ﯾﮏ ﺟﻮﺍﺏ ﺭﻭ ﺑﻬﺘﻮﻥ ﻣﻴﺪﻩ ﻭ
ﺧﻴﻠﯽ ﻫﻢ ﺳﺎﺩﻩ ﻫﺴﺖ( ﺍﻣﺘﺤﺎﻥ ﮐﻨﻴﺪ.
ﺩﺭ ﺍﯾﻦ ﺣﺎﻟﺖ ﻧﻤﺎﯾﺸﮕﺮ ) ﯾﺎ ﻫﻤﻮﻥ (Viewﺷﺎﻣﻞ ﻣﺴﻴﺮ ﻭﺍﻗﻌﯽ ﻫﺴﺘﺶ .ﺍﮔﺮ ﺷﻤﺎ ﻣﺴﻴﺮ ﻭﺍﻗﻌﯽ ﺭﻭ ﻣﺸﺨﺺ ﺑﮑﻨﻴﺪ ،ﺁﻧﮕﺎﻩ
ﻧﻤﺎﯾﺸﮕﺮ ﺍﯾﻦ ﻣﺴﻴﺮ ﺭﺍ ﻣﺤﺎﺳﺒﻪ ﻣﯽ ﮐﻨﺪ ﻭ ﺑﻪ ﺻﻮﺭﺕ ﻧﺮﻣﺎﻝ ﺩﺭ MVCﺩﺭ ﻣﯽ ﺁﻭﺭﺩ .ﺑﻪ ﻋﻨﻮﺍﻥ ﻣﺜﺎﻝ ﻧﻤﺎﯾﺸﮕﺮ ﻣﺴﻴﺮ
Subfolder\Detailsﺭﺍ ﺍﺯ ﻣﺘﺪ )( Detailsﺑﻪ ﺻﻮﺭﺕ ﺯﯾﺮ ﻓﺮﺍﺧﻮﺍﻧﯽ ﻣﯽ ﮐﻨﺪ:
\Views\Details\Subfolder\Details.aspx
FaEdu.irﮔﺮﻭﻩ ﺁﻣﻮﺯﺵ ﻓﺎﺭﺳﻲ ﺁﻣﻮﺯﺵ ﺑﻪ ﻫﻤﺮﺍﻩ ﭘﺮﻭژﻩ MVC.Net 40
ﺍﻟﺒﺘﻪ ﺩﺭ ﺁﺧﺮ ﺍﯾﻦ ﻣﺒﺤﺚ ﺑﺎﯾﺪ ﺍﯾﻨﻮ ﺍﺿﺎﻓﻪ ﮐﻨﻢ ﮐﻪ ﻣﺘﺪ )( Viewﺷﺎﻣﻞ ﭘﺎﺭﺍﻣﺘﺮﻫﺎی ﺯﯾﺮ ﻧﻴﺰ ﻣﯽ ﺑﺎﺷﺪ
ﻣﻌﻤﻮﻻً ﺩﺭ ﻃﻮﻝ ﺑﺮﻧﺎﻣﻪ ﺑﻪ ﺍﯾﻦ ﻧﻴﺎﺯ ﭘﻴﺪﺍ ﻣﯽ ﮐﻨﻴﻢ ﮐﻪ ﺑﻴﻦ ﺩﻭ ﮐﻨﺘﺮﻟﺮ ﺍﻧﺘﻘﺎﻝ ﭘﻴﺪﺍ ﮐﻨﻴﻢ .ﺩﺭ ﺍﯾﻦ ﻟﺤﻈﻪ!!! ﺍﺳﺖ ﮐﻪ ﺷﻤﺎ ﻣﯽ ﺗﻮﺍﻧﻴﺪ
ﺍﺯ ﻣﺘﺪ )( RedirectToActionﺍﺳﺘﻔﺎﺩﻩ ﻧﻤﺎﯾﻴﺪ .
ﺑﻪ ﻋﻨﻮﺍﻥ ﻣﺜﺎﻝ ﺩﺭ ﻧﻤﻮﻧﻪ ﮐﺪﻫﺎی ﺯﯾﺮ ﮐﻨﺘﺮﻟﺮ Widgetﺷﺎﻣﻞ ﻋﻤﻞ ) ﯾﺎ ﻫﻤﻮﻥ Detail() (actionﻣﯽ ﺑﺎﺷﺪ .ﺍﮔﺮ ﻋﻤﻞ )(Details
ﺑﻪ ﭘﺎﺭﺍﻣﺘﺮ idﺍﺳﺘﻨﺎﺩ ﻧﮑﻨﺪ ) ﯾﺎ ﺑﺪﻭﻥ ﺍﯾﻨﮑﻪ ﺑﻪ ﭘﺎﺭﺍﻣﺘﺮ idﺍﺳﺘﻨﺎﺩ ﮐﻨﺪ( ﮐﺎﺭﺑﺮ ﺭﺍ ﺑﻪ ﺻﻔﺤﻪ ﺧﺎﺹ ﮐﻪ ﻣﺎ ﺩﺭ ﺍﯾﻨﺠﺎ )( indexﺭﺍ ﺩﺭ ﻧﻈﺮ
ﮔﺮﻓﺘﻴﻢ ،ﺑﺮ ﻣﯽ ﮔﺮﺩﺍﻧﺪ:
ﻓﻘﻂ ﻗﺒﻠﺶ ﯾﻪ ﺗﻮﺿﻴﺢ ﮐﻮﭼﻴﮏ ﺑﺪﻡ :ﻣﺜﻞ ﮔﺬﺷﺘﻪ ﺍﺑﺘﺪﺍ ﯾﮏ ﮐﻨﺘﺮﻟﺮ ﺩﺭ ﻓﻮﻟﺪﺭ Controllersﺑﺎ ﻧﺎﻡ WidgetControllerﺍﯾﺠﺎﺩ ﮐﺮﺩﯾﻢ
ﻭ ﮐﺪﻫﺎ ﺭﻭ ﻣﻄﺎﺑﻖ ﺯﯾﺮ ﺗﻐﻴﻴﺮ ﺩﺍﺩﯾﻢ:
using ;System
using ;System.Collections.Generic
using ;System.Linq
using ;System.Web
using ;System.Web.Mvc
namespace Faedu.Controllers
{
public class WidgetController : Controller
{
//
// GET: /Widget/
//
// GET: /Widget/Create
)public ActionResult Details(int? id
{
)if (!id.HasValue
;)"return RedirectToAction("Index
;)(return View
}
}
}
FaEdu.irﮔﺮﻭﻩ ﺁﻣﻮﺯﺵ ﻓﺎﺭﺳﻲ ﺁﻣﻮﺯﺵ ﺑﻪ ﻫﻤﺮﺍﻩ ﭘﺮﻭژﻩ MVC.Net 41
ﺩﺭ MVCﯾﮏ ﺗﺎﺑﻊ ﺑﺮﮔﺸﺘﯽ ﺩﺍﺭﯾﻢ ﮐﻪ ﻓﻘﻂ ﺭﺷﺘﻪ ﯾﺎ ﻫﻤﻮﻥ Stringﺭﺍ ﺑﻬﻤﻮﻥ ﻧﺸﻮﻥ ﻣﻴﺪﻩ ) ﺧﻴﻠﯽ ﺩﯾﮕﻪ ﺧﻮﺩﻣﻮﻧﯽ ﺑﻮﺩ(
ﺍﺳﻢ ﺍﯾﻦ ﺗﺎﺑﻊ )( sayﻫﺴﺖ .ﻫﺮ ﺟﺎ ﺍﺯ ﺍﯾﻦ ﺗﺎﺑﻊ ﺍﺳﺘﻔﺎﺩﻩ ﺑﮑﻨﻴﺪ ﺍﻭﻥ ﺭﺷﺘﻪ ﺍی ﮐﻪ ﺩﺍﺧﻠﺶ ﻫﺴﺖ ﺭﻭ ﻧﺸﻮﻥ ﻣﻴﺪﻩ .ﻓﻘﻂ ﺩﻗﺖ
ﮐﻨﻴﺪ ﮐﻪ ﺭﺷﺘﻪ ﺭﺍ ﺩﺭ ﯾﮏ ﺩﺍﺑﻞ ﮐﻮﺗﻴﺸﻦ ﻗﺮﺍﺭ ﺑﺪﯾﺪ .ﺑﻪ ﻫﻤﻴﻦ ﺭﺍﺣﺘﯽ...
ﻣﺜﻞ ﮐﺪ ﺯﯾﺮ .ﻓﻘﻂ ﺩﻗﺖ ﮐﻨﻴﺪ ﮐﻪ ﺑﻨﺪﻩ ﺩﯾﮕﻪ ﺍﯾﻦ ﺭﻭ ﺩﺭ ﻭﯾﮋﻭﺍﻝ ﺍﺳﺘﻮﺩﯾﻮ ﺭﺍﻥ ﻧﮑﺮﺩﻡ .ﭼﻮﻥ ﭼﻴﺰ ﺧﺎﺻﯽ ﻧﻴﺴﺖ
ﺑﺮﺍی ﺩﻭﺳﺘﺎﻧﯽ ﮐﻪ ﻧﻤﻴﺪﻭﻧﻦ JSONﭼﻴﻪ ﺑﺎﯾﺪ ﺑﮕﻢ ﮐﻪ ﻣﺨﻔﻒ JavaScript Object Notationﻫﺴﺖ ﺑﻪ ﻣﻌﻨﺎی ﺷﯽ ﻋﻼﻣﺖ
ﮔﺬﺍﺭی ﺟﺎﻭﺍ ﺍﺳﮑﺮﯾﭙﺖ .ﺑﻨﺪﻩ ﺧﻮﺩﻡ ﺑﻪ ﺷﺨﺼﻪ ﺯﯾﺎﺩ ﺟﺎﻭﺍ ﺑﻠﺪ ﻧﻴﺴﺘﻢ.
ﺑﻪ ﻃﻮﺭ ﮐﻞ ﺷﻤﺎ ﻣﯽ ﺗﻮﺍﻧﻴﺪ ﺍﺯ ﺍﯾﻦ ﺗﺎﺑﻊ ﺑﺮﺍی ﻣﻮﺍﺭﺩی ﮐﻪ ﻣﻴﺨﻮﺍﻫﻴﺪ ﺑﺮﻧﺎﻣﻪ ی ﺧﻮﺩ ﺭﺍ ﺁﺟﺎﮐﺲ ﮐﻨﻴﺪ ﺍﺳﺘﻔﺎﺩﻩ ﻧﻤﺎﯾﻴﺪ .ﺍﻟﺒﺘﻪ ﻣﻮﺍﺭﺩ
ﺩﯾﮕﺮی ﻧﻴﺰ ﻣﯽ ﺗﻮﺍﻧﻴﺪ ﺍﺯ ﺍﯾﻦ ﺗﺎﺑﻊ ﺍﺳﺘﻔﺎﺩﻩ ﻧﻤﺎﯾﻴﺪ ﻣﺜﻞ ﺍﻧﺘﻘﺎﻝ ﻭ ﺗﺒﺪﯾﻞ ﺩﯾﺘﺎﺑﻴﺲ ﺑﻪ JSONﻭ ﺍﻧﺘﻘﺎﻝ ﺍﺯ ﺁﻥ ﺑﻪ ﻣﺮﻭﺭﮔﺮ ﺑﺮﺍی ﻧﻤﺎﯾﺶ
ﺑﻬﺘﺮ .ﺑﺮﺍی ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺍﯾﻦ ﺗﺎﺑﻊ ﺷﻤﺎ ﻣﯽ ﺗﻮﺍﻧﻴﺪ ﺍﺯ )( Jsonﺍﺳﺘﻔﺎﺩﻩ ﮐﻨﻴﺪ.
ﻣﺜﻞ ﺷﮑﻞ ﺯﯾﺮ .ﻓﻘﻂ ﯾﮏ ﻧﮑﺘﻪ ﺷﻤﺎ ﺑﻬﺘﺮﻩ ﺑﺮﺍی ﻓﻬﻢ ﺑﻬﺘﺮ ﯾﮏ ﭘﺮﻭژﻩ ﺟﺪﯾﺪ ﺑﺎﺯ ﮐﻨﻴﺪ.
;}
;)return Json(quetes
}
ﮐﺪ ﺑﺎﻻ ﺑﺮﺍی ﻗﺴﻤﺖ ﮐﻨﺘﺮﻟﺮ ﻫﺴﺖ ﯾﻌﻨﯽ ﯾﮏ ﮐﻨﺘﺮﻟﺮ ﺍﯾﺠﺎﺩ ﻣﯽ ﮐﻨﻴﺪ ﻭ ﻣﻮﺍﺭﺩ ﺑﺎﻻ ﺭﻭ ﺗﺎﯾﭗ ﻣﯽ ﮐﻨﻴﺪ
ﮔﺮﻭﻩ ﺁﻣﻮﺯﺵ ﻓﺎﺭﺳﻲFaEdu.ir MVC.Net ﺁﻣﻮﺯﺵ ﺑﻪ ﻫﻤﺮﺍﻩ ﭘﺮﻭژﻩ 42
<script type="text/javascript">
function getQuote() {
$.getJSON("Quotation/List", showQuote);
}
function showQuote(data) {
var index = Math.floor(Math.random() * 3);
$("#quote").text(data[index]);
}
</script>
<p id="quote"></p>
(ﺍﻟﺒﺘﻪ ﻭﻗﺘﯽ ﺭﻭی ﺩﮐﻤﻪ ﮐﻠﻴﮏ ﻣﯽ ﮐﻨﻴﺪ ﺑﺎﯾﺪ ﺍﻭﻥ ﺳﻪ ﺧﻂ ﮐﻪ ﺗﺴﺖ ﺑﻮﺩ ﺭﻭ ﻧﺸﻮﻥ ﺑﺪﻩ) ﺑﻪ ﺻﻮﺭﺕ ﺁﺟﺎﮐﺲ
FaEdu.irﮔﺮﻭﻩ ﺁﻣﻮﺯﺵ ﻓﺎﺭﺳﻲ ﺁﻣﻮﺯﺵ ﺑﻪ ﻫﻤﺮﺍﻩ ﭘﺮﻭژﻩ MVC.Net 43
ﻣﻄﻤﺌﻨﺎً ﺍﯾﻦ ﻗﺴﻤﺖ ﺑﻪ ﺩﺭﺩ ﺧﻴﻠﯽ ﻫﺎ ﻣﻴﺨﻮﺭﻩ .ﻣﯽ ﺧﻮﺍﻡ ﺑﻬﺘﻮﻥ ﺑﮕﻢ ﭼﻄﻮﺭ ﻣﯽ ﺗﻮﻧﻴﻢ ﯾﮏ ﻓﺎﯾﻞ ﺭﻭ ﺑﺮﺍی ﺩﺍﻧﻠﻮﺩ ﺩﺭ ﺍﺧﺘﻴﺎﺭ ﺑﺎﺯﺩﯾﺪ
ﮐﻨﻨﺪﻩ ﻗﺮﺍﺭ ﺑﺪﯾﻢ .ﺟﺎﻟﺒﻪ ﮐﻪ ﻣﺎﯾﮑﺮﻭﺳﺎﻓﺖ ﺩﺭ ﻭﺭژﻥ ﺟﺪﯾﺪ MVCﺑﻪ ﺍﯾﻦ ﻗﻀﻴﻪ ﻓﮑﺮ ﮐﺮﺩﻩ ﻭ ﯾﮏ ﺗﺎﺑﻊ ﺍﺧﺘﺼﺎﺻﯽ ﺑﻪ ﺍﯾﻦ ﻗﻀﻴﻪ
ﺍﺧﺘﺼﺎﺹ ﺩﺍﺩﻩ .ﺟﺎﻟﺒﻪ؟ ﻧﻪ؟!
ﺧﻮﺏ ﺍﺳﻢ ﺍﯾﻦ ﺗﺎﺑﻊ )( Downloadﻫﺴﺘﺶ .ﻣﺜﻞ ﺑﻘﻴﻪ ﺗﺎﺑﻊ ﻫﺎ ﻫﻢ ﺍﺳﺘﻔﺎﺩﻩ ﻣﻴﺸﻪ.
ﺍﻭﻝ ﯾﮏ ﮐﻨﺘﺮﻟﺮ ﺍﯾﺠﺎﺩ ﻣﯽ ﮐﻨﻴﻢ ﻣﺜﻼً ﺑﺎ ﻧﺎﻡ ﺩﺍﻧﻠﻮﺩ .ﻓﻘﻂ ﻗﺒﻠﺶ ﯾﮏ ﻓﻮﻟﺪﺭ ﺑﺎﺯ ﻣﯽ ﮐﻨﻴﻢ ﻭ ﯾﮏ ﻓﺎﯾﻞ ﺗﺴﺖ ﺭﻭ ﺩﺭ ﺍﻭﻥ ﻗﺮﺍﺭ ﻣﻴﺪﻫﻴﻢ
}
ﻣﻦ ﯾﺨﻮﺭﺩﻩ ﺳﺨﺖ ﮐﺮﺩﻡ ﮐﺎﺭ ﺭﻭ .ﯾﻌﻨﯽ ﺍﻭﻝ ﯾﮏ ﺻﻔﺤﻪ ﺑﺮﺍی ﻓﻮﻟﺪﺭ ﺩﺍﻧﻠﻮﺩ ﺩﺭﺳﺖ ﮐﺮﺩﻡ ﺑﻌﺪ ﯾﮏ ﻭﯾﻮ ﻫﻢ ﺑﺮﺍی ﺧﻮﺩ ﺗﺎﺑﻊ ﺩﺍﻧﻠﻮﺩ
ﻣﻴﺰﻧﻴﺪ ﻭﺍﺭﺩ ﺻﻔﺤﻪ ﺍﻭﻝ ﻣﻴﺸﻴﺪ ﺑﻌﺪ ﮐﻪ ﺭﻭی ﻟﻴﻨﮏ ﺻﻔﺤﻪ ﺩﻭﻡ ) ﮐﻪ ﺑﻪ ﻃﻮﺭ ﺩﺳﺘﯽ ﺩﺭﺳﺖ ﺷﺪﻩ ( ﯾﻌﻨﯽ ﻭﻗﺘﯽ ﺁﺩﺭﺱ ﺭﻭ
ﮐﻠﻴﮏ ﻣﯽ ﮐﻨﻴﺪ ﻓﺎﯾﻞ ﺩﺍﻧﻠﻮﺩ ﻣﻴﺸﻪ
ﮔﺮﻭﻩ ﺁﻣﻮﺯﺵ ﻓﺎﺭﺳﻲFaEdu.ir MVC.Net ﺁﻣﻮﺯﺵ ﺑﻪ ﻫﻤﺮﺍﻩ ﭘﺮﻭژﻩ 44
<h2>
<a href="Download/Download">
Nemone File Download
</a>
</h2>
</asp:Content>
:ﺧﻮﺏ ﮐﻞ ﻗﻀﻴﻪ ﺑﺎﯾﺪ ﻣﺜﻞ ﻋﮑﺲ ﺯﯾﺮ ﺑﺎﺷﻪ
ﻫﻤﻴﻦ ﺑﻪ ﻫﻤﻴﻦ ﺭﺍﺣﺘﯽ .ﺍﻟﺒﺘﻪ ﺩﺭ ﺁﯾﻨﺪﻩ ﮐﺎﻣﻼٌ ﺗﻮﺿﻴﺢ ﻣﻴﺪﻡ ﮐﻪ ﭼﺠﻮﺭی ﯾﮏ ﭘﻨﻞ ﻣﺪﯾﺮﯾﺖ ﺩﺭﺳﺖ ﮐﻨﻴﻢ ﻭ ﺍﺯ ﺍﻭﻥ ﻃﺮﯾﻖ ﺍﯾﻨﮑﺎﺭﺍﺭﻭ
ﺍﻧﺠﺎﻡ ﺑﺪﯾﻢ .ﺍﻻﻥ ﻫﻤﻪ ی ﻣﻮﺍﺭﺩ ﺑﻪ ﺻﻮﺭﺕ ﺩﺳﺘﯽ ﺍﻧﺠﺎﻡ ﻣﻴﺸﻪ.
ﺩﺭ ﻧﻬﺎﯾﺖ ،ﻣﺘﺪ )( Fileﭘﺎﺭﺍﻣﺘﺮﻫﺎی ﺟﺎﻟﺒﯽ ﺩﺍﺭﻩ ﮐﻪ ﺑﻬﺶ ﺗﻮﺟﻪ ﮐﻨﻴﺪ...
ﺍﻟﮕﻮﺭﯾﺘﻢ ﭘﻴﺶ ﻓﺮﺽ MVC.Netﺑﺮﺍی ﺍﯾﻦ ﻣﻮﺿﻮﻉ ﺑﺴﻴﺎﺭ ﺳﺎﺩﻩ ﺍﺳﺖ .ﺍﮔﺮ ﺷﻤﺎ ﺩﺭ ﻣﺮﻭﺭﮔﺮ ﺧﻮﺩ /Product/Detaisﺭﺍ ﺗﺎﯾﭗ ﮐﻨﻴﺪ،
ﺑﻪ ﻋﻨﻮﺍﻥ ﻣﺜﺎﻝ ﻣﺘﺪ )( Detailsﮐﻼﺳﯽ ﺍﺯ ProductControllerﻫﺴﺖ ﮐﻪ ﻗﺎﺑﻠﻴﺖ ﺍﺟﺮﺍﯾﯽ ﺷﺪﻥ ﺭﺍ ﺩﺍﺭﺩ.
ﺩﺭ ﺍﯾﻦ ﺑﺨﺶ ﻣﯽ ﺧﻮﺍﻫﻢ ﺑﻪ ﺷﻤﺎ ﻧﺤﻮﻩ ی ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ AcceptVerbs , ActionNameﻭ ActionMethodSelectorﺭﺍ ﺁﻣﻮﺯﺵ
ﺑﺪﻫﻢ .ﯾﮏ ﺗﻮﺿﻴﺢ ﮐﻮﭼﮏ ﺩﺭ ﻣﻮﺭﺩ ﺍﯾﻦ ﺳﻪ ﮔﺰﯾﻨﻪ :ﺍﯾﻨﻬﺎ ﺧﺎﺻﻴﺖ ﻫﺎی ﺍﺧﺘﺼﺎﺻﯽ ﺍﺯ ﯾﮏ ﻋﻤﻠﮕﺮ ﻫﻨﮕﺎﻡ ﻓﺮﺍﺧﻮﺍﻧﯽ ﻫﺴﺘﻨﺪ).ﺩﺭ
ﺍﯾﻨﺠﺎ ﻧﻴﺰ ﻣﺎﻧﻨﺪ ﮔﺬﺷﺘﻪ ﻣﻨﻈﻮﺭﻡ ﺍﺯ ﻋﻤﻠﮕﺮ ﻫﻤﺎﻥ Actionﻣﯽ ﺑﺎﺷﺪ (
ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ AcceptVerbs
ﺍﯾﻦ ﻭﯾﮋﮔﯽ ﯾﺎ ﻫﻤﻮﻥ Attributeﻣﯽ ﺑﺎﺷﺪ ﺑﺮﺍی ﺟﻠﻮﮔﻴﺮی ﺍﺯ ﯾﮑﺴﺮی ﻋﻤﻠﮕﺮ ﻫﺎ) ( Actionﻗﺒﻞ ﺍﺯ ﺍﯾﻨﮑﻪ ﻓﺮﺍﺧﻮﺍﻧﯽ ﺑﺸﻮﻧﺪ .ﺍﻟﺒﺘﻪ
ﺑﻪ ﺟﺰ ﻣﻮﺍﻗﻌﯽ ﮐﻪ ) ﯾﺎ ﻗﺒﻞ ﺍﺯ ﺍﯾﻨﮑﻪ ( ﻋﻤﻠﮕﺮ HTTPﺷﺮﻭﻉ ﺑﻪ ﻓﻌﺎﻟﻴﺖ ﮐﻨﺪ .ﯾﻪ ﻋﻨﻮﺍﻥ ﻣﺜﺎﻝ ﺷﻤﺎ ﻣﯽ ﺗﻮﺍﻧﻴﺪ ﺍﺯ ﺍﯾﻦ ﻭﯾﮋﮔﯽ
ﺍﺳﺘﻔﺎﺩﻩ ﻧﻤﺎﯾﻴﺪ ﺑﺮﺍی ﻋﻤﻠﻴﺎﺗﯽ ﮐﻪ ﻗﺮﺍﺭ ﺍﺳﺖ Http Postﺍﻧﺠﺎﻡ ﺩﻫﺪ .ﺑﻪ ﺯﺑﺎﻥ ﺳﺎﺩﻩ ﺗﺮ ﺍﯾﻨﻄﻮﺭی ﺑﺮﺍﺗﻮﻥ ﺗﻌﺮﯾﻒ ﮐﻨﻢ ﮐﻪ :
ﯾﮑﺰﻣﺎﻧﯽ ﺷﻤﺎ ﻣﻴﺨﻮﺍﻫﻴﺪ ﮐﺎﺭﺑﺮ ﺗﺎ ﺑﻪ ﻋﻨﻮﺍﻥ ﻣﺜﺎﻝ ﺭﻭی ﯾﮏ ﺩﮐﻤﻪ ﮐﻠﻴﮏ ﻧﮑﺮﺩﻩ ﺍﺗﻔﺎﻗﯽ ﺭﺥ ﻧﺪﻫﺪ ﯾﺎ ﺑﺎﻟﻌﮑﺲ...
ﻣﻴﺪﻭﻧﻢ ﯾﺨﻮﺭﺩﻩ ﺍﯾﻦ ﺑﺨﺶ ﻭ ﺑﺨﺼﻮﺹ ﺍﯾﻦ ﭼﻨﺪ ﺧﻂ ﺍﺧﻴﺮ ﺳﺨﺖ ﺑﻮﺩ ﻭﻟﯽ ﺩﺭ ﻣﺜﺎﻟﯽ ﮐﻪ ﺩﺭ ﺯﯾﺮ ﻣﻴﺎﻭﺭﻡ ﺷﺎﯾﺪ ﺧﻴﻠﯽ ﺍﺯ ﺷﺒﻬﺎﺕ ﺍﺯ
ﺑﻴﻦ ﺑﺮﻩ...
ﺩﺭ ﻣﺜﺎﻝ ﺯﯾﺮ ﮐﻨﺘﺮﻟﺮ Employeeﺩﻭ ﻋﻤﻠﮕﺮ ﺑﺎ ﻧﺎﻡ )( Createﺭﺍ ﻧﺸﺎﻥ ﻣﯽ ﺩﻫﺪ .ﺍﻭﻟﻴﻦ ﻋﻤﻠﮕﺮ ﺑﺮﺍی ﻧﺸﺎﻥ ﺩﺍﺩﻥ ﺩﺭ ﺻﻔﺤﻪ HTMLﻭ
ﯾﺎ ﻫﻤﻮﻥ ﺻﻔﺤﻪ ﺍی ﮐﻪ ﮐﺎﺭﺑﺮ ﻣﻴﺒﻴﻨﻪ ﻭ ﮐﺎﺭﺵ ﻫﻢ ﺑﺮﺍی ﺍﯾﺠﺎﺩ ﻭ ﺳﺎﺧﺖ ﯾﮏ ﺍﺳﺘﺨﺪﺍﻣﯽ ﺟﺪﯾﺪﻩ! )ﭼﻴﺰی ﮐﻪ ﺗﻮ ﺍﯾﺮﺍﻥ ﺯﯾﺎﺩﻩ :ﺩی(
ﻭ ﺩﻭﻣﯽ ﻫﻢ ﺑﺮﺍی ﻗﺮﺍﺭﺩﺍﻥ ﻭ ﯾﺎ ﻫﻤﻮﻥ ﺫﺧﻴﺮﻩ ﮐﺮﺩﻥ ﺍﯾﻦ ﺍﺳﺘﺨﺪﺍﻣﯽ ﺩﺭ ﺩﯾﺘﺎﺑﻴﺲ ﻫﺴﺖ.
ﻫﺮﺩﻭ ﻣﺘﺪ )( Createﺑﺮﺍی ﻧﺸﺎﻥ ﺩﺍﺩﻥ ﻭﯾﮋﮔﯽ AcceptVerbsﺑﻪ ﮐﺎﺭ ﻣﯽ ﺭﻭﻧﺪ .ﺍﻭﻟﻴﻦ ﻣﺘﺪ )( Createﺗﻮﺍﻧﺎﯾﯽ ﺍﻧﺠﺎﻡ ﻓﻘﻂ ﺑﺮ
ﺍﺳﺎﺱ ﻋﻤﻠﻴﺎﺕ Http Getﺭﺍ ﺩﺍﺭﺍﺳﺖ ﻭ ﺩﻭﻣﯽ ﺗﻨﻬﺎ ﺑﺮﺍی ﻋﻤﻠﻴﺎﺕ .Http Post
ﺩﺭ ﺩﺭﺱ ﻫﺎی ﮔﺬﺷﺘﻪ ﻧﺤﻮﻩ ی ﺳﺎﺧﺖ ﮐﻼﺱ ﺭﻭ ﺗﻮﺿﻴﺞ ﺩﺍﺩﻡ .ﯾﮏ ﮐﻼﺱ ﺩﺭﺳﺖ ﻣﯽ ﮐﻨﻴﻢ ﻭ ﮐﺪﻫﺎی ﺯﯾﺮ ﺭﺍ ﺩﺭ ﺁﻥ ﻗﺮﺍﺭ ﻣﯽ
ﺩﻫﻴﻢ:
;using System.Web.Mvc
;using ToyStore.Models
namespace ToyStore.Controllers
{
public class EmployeeController : Controller
ﮔﺮﻭﻩ ﺁﻣﻮﺯﺵ ﻓﺎﺭﺳﻲFaEdu.ir MVC.Net ﺁﻣﻮﺯﺵ ﺑﻪ ﻫﻤﺮﺍﻩ ﭘﺮﻭژﻩ 46
{
private EmployeeController _repository = new EmployeeController();
//
// GET: /Employee/
// GET: /Employee/Create
[AcceptVerbs(HttpVerbs.Get)]
public ActionResult Create()
{
return View();
}
//
// Post: /Employee/Create
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create(EmployeeController employeeToCreate)
{
try
{
_repository.InsertEmployee(employeeToCreate);
return RedirectToAction("Index");
}
catch
{
return View();
}
}
// Delete : /Employee/Delete/1
[AcceptVerbs(HttpVerbs.Delete)]
public ActionResult Delete(int id)
{
_repository.DeleteEmployee(id);
return Json(true);
}
}
}
ﻣﺎﻧﻨﺪ ﺯﯾﺮ. ﺑﺎﺷﺪController/EmployeeController.css ﯾﻌﻨﯽ ﺁﺩﺭﺱ ﻓﺎﯾﻞ ﺑﺎﻻ ﺑﺎﯾﺪ
ﮔﺮﻭﻩ ﺁﻣﻮﺯﺵ ﻓﺎﺭﺳﻲFaEdu.ir MVC.Net ﺁﻣﻮﺯﺵ ﺑﻪ ﻫﻤﺮﺍﻩ ﭘﺮﻭژﻩ 47
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace ToyStore.Models
{
public class Employee
{
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace ToyStore.Models
{
public class EmployeeRepository
{
}
}
<h2>Index</h2>
<%= Ajax.ActionLink
(
FaEdu.irﮔﺮﻭﻩ ﺁﻣﻮﺯﺵ ﻓﺎﺭﺳﻲ ﺁﻣﻮﺯﺵ ﺑﻪ ﻫﻤﺮﺍﻩ ﭘﺮﻭژﻩ MVC.Net 48
></asp:Content
ﺍﻟﺒﺘﻪ ﺍﯾﻦ ﻭﯾﻮ ﺭﺍ ﺍﺯ ﮔﺰﯾﻨﻪ ی Deleteﺳﺎﺧﺘﻢ .ﺷﻤﺎ ﻣﯽ ﺗﻮﺍﻧﻴﺪ ﺍﺯ Indexﻭ ﯾﺎ ﺣﺘﯽ ﺍﺯ Createﺑﺴﺎﺯﯾﺪ .ﻭﻫﻤﻴﻨﻄﻮﺭ ﯾﺨﻮﺭﺩﻩ
ﺁﺟﺎﮐﺲ ﮐﺎﺭ ﮐﺮﺩﻡ..
ﯾﮏ ﺗﻮﺿﻴﺢ ﻫﻢ ﺩﺭ ﻣﻮﺭﺩ ﺗﻔﺎﻭﺕ Postﻭ getﺑﺪﻫﻢ .ﺧﻴﻠﯽ ﺍﺯ ﻣﺮﺩﻡ ) ﻣﻨﻈﻮﺭﻡ ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﺎﻥ ﻋﺰﯾﺰﻩ( ﻓﮑﺮ ﻣﯽ ﮐﻨﻦ ﺍﯾﻦ ﺩﻭ ﻫﻴﭻ
ﺗﻔﺎﻭﺗﯽ ﻧﻤﯽ ﮐﻨﻦ ﻭﻟﯽ ...ﺷﻤﺎ ﻭﻗﺘﯽ ﺍﺯ Getﺍﺳﺘﻔﺎﺩﻩ ﻣﯽ ﮐﻨﻴﺪ ﮐﻪ ﺩﺭ ﻓﺮﻣﺘﻮﻥ ﻓﻴﻠﺪﻫﺎﯾﯽ ﻣﺎﻧﻨﺪ ﺁﺩﺭﺱ ﻭ ﻧﺎﻡ ﻭ ﻧﺎﻡ ﺧﺎﻧﻮﺍﺩﮔﯽ ﻭ
..ﺩﺍﺷﺘﻪ ﺑﺎﺷﻴﺪ ﻭ ﺑﻪ ﺍﺻﻄﻼﺡ ﺍﺭﺯﺵ ﺍﻃﻼﻋﺎﺗﯽ ﺯﯾﺎﺩی ﻧﺪﺍﺷﺘﻪ ﺑﺎﺷﻨﺪ .ﻭﻟﯽ ﺯﻣﺎﻧﯽ ﮐﻪ ﻧﺎﻡ ﮐﺎﺭﺑﺮی ﻭ ﺭﻣﺰ ﻋﺒﻮﺭ ﺭﺍ ﮐﺎﺭﺑﺮ ﺑﺎﯾﺪ ﺍﺭﺩ
ﮐﻨﺪ ﺩﯾﮕﺮ ﻗﻀﻴﻪ ﻓﺮﻕ ﻣﯽ ﮐﻨﺪ ﻭ ﺑﻬﺘﺮ ﺍﺳﺖ ﺑﺮﺍی ﺍﻣﻨﻴﺖ ﺍﺯ ﻣﺘﺪ Postﺍﺳﺘﻔﺎﺩﻩ ﮐﻨﻴﺪ .ﺧﻮﺏ ﺑﺮﺍی ﺍﯾﻨﮑﻪ ﺭﺍﺣﺖ ﺗﺮ ﮐﻨﻢ ﺑﺤﺚ ﺭﻭ
ﺍﯾﻨﻄﻮﺭی ﺑﮕﻢ ﮐﻪ ﻭﻗﺘﯽ ﺍﺯ ﻣﺘﺪ Getﺍﺳﺘﻔﺎﺩﻩ ﻣﯽ ﮐﻨﻴﺪ ﺗﻤﺎﻣﯽ ﺍﻃﻼﻋﺎﺕ ﻭﺍﺭﺩ ﺷﺪﻩ ﺩﺭ ﻓﻴﻠﺪﻫﺎ ﺩﺭ ﺍﺩﺭﺱ ﺑﺎﺭ ﺑﻪ ﺻﻮﺭﺕ ﮐﺎﻣﻼً
ﻭﺍﺿﺢ ﻧﻤﺎﯾﺶ ﺩﺍﺩﻩ ﻣﻴﺸﻪ ﻭﻟﯽ ﻭﻗﺘﯽ ﺍﺯ ﻣﺘﺪ Postﺍﺳﺘﻔﺎﺩﻩ ﻣﯽ ﮐﻨﻴﺪ ﺍﯾﻦ ﻗﻀﻴﻪ ﮐﺎﻣﻼً ﻓﺮﻕ ﺩﺍﺭﻩ ﻭ ﺩﺭ ﺧﻴﻠﯽ ﺍﺯ ﻣﻮﺍﻗﻊ ﻣﻮﺍﺭﺩ ﻭﺍﺭﺩ
ﺷﺪﻩ ﺩﺭ ﻓﻴﻠﺪﻫﺎ Encryptﯾﺎ ﺭﻣﺰﮔﺬﺍﺭی ﻣﯽ ﺷﻮﻧﺪ.
ﻫﻤﻮﻧﻄﻮﺭ ﮐﻪ ﻣﻴﺒﻴﻨﻴﺪ ﺑﻨﺪﻩ ﺍﺯ ﻣﺘﺪ ﭘﺴﺖ ﺍﺳﺘﻔﺎﺩﻩ ﮐﺮﺩﻡ ﻭ ﺍﻃﻼﻋﺎﺕ ﺑﻪ ﺻﻮﺭﺕ ﭼﻨﺪ ﻋﺪﺩ ﻭ ﺣﺮﻑ ﻧﺎ ﻣﻌﻠﻮﻡ ﺑﺮﺍی ﺳﺮﻭﺭ ﺩﺭ ﺣﺎﻝ
ﺍﺭﺳﺎﻝ ﻫﺴﺖ.
ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ActionName
ﺯﻣﺎﻧﯽ ﺷﻤﺎ ﺍﺯ ﺍﯾﻦ ﻭﯾﮋﮔﯽ ﺍﺳﺘﻔﺎﺩﻩ ﻣﯽ ﮐﻨﻴﺪ ﮐﻪ ﻣﯽ ﺧﻮﺍﻫﻴﺪ ﻧﺎﻡ ﻣﺘﺪ ﻫﻢ ﻧﻤﺎﯾﺶ ﺩﺍﺩﻩ ﺷﻮﺩ .ﺩﺭ ﺍﯾﻨﺠﺎ ﺷﻤﺎ ﺩﻭ ﺭﺍﻩ ﺑﺮﺍی
ﺍﺳﺘﻔﺎﺩﻩ ﺑﻬﻴﻨﻪ ﺍﺯ ﺍﯾﻦ ﻭﯾﮋﮔﯽ ﺩﺍﺭﯾﺪ:
ﺍﻭﻟﻴﺶ ﺯﻣﺎﻧﻴﻪ ﮐﻪ ﻣﺘﺪ ﺷﻤﺎ Overloadedﻣﻴﮑﻨﻪ )ﻣﺎ ﺑﻬﺶ ﻣﻴﮕﻴﻢ ﺳﺮﺑﺎﺭ – ﺷﺮﻣﻨﺪﻩ ﺑﺮﺍی ﺑﻌﻀﯽ ﺍﺯ ﮐﻠﻤﺎﺕ ﻣﻌﺎﺩﻝ ﭘﻴﺪﺍ ﻧﻤﻴﺸﻪ(
FaEdu.irﮔﺮﻭﻩ ﺁﻣﻮﺯﺵ ﻓﺎﺭﺳﻲ ﺁﻣﻮﺯﺵ ﺑﻪ ﻫﻤﺮﺍﻩ ﭘﺮﻭژﻩ MVC.Net 49
ﺩﺭ ﺣﻘﻴﻘﺖ ﺷﻤﺎ ﻣﯽ ﺗﻮﺍﻧﻴﺪ ﺍﺯ ﺍﯾﻦ ﻭﯾﮋﮔﯽ ActionNameﺑﺮﺍی ﺗﺸﺨﻴﺺ ﺩﺍﺩﻥ ) ﯾﺎ ﻭﺟﻪ ﺗﻤﺎﯾﺰ ﻗﺎﯾﻞ ﺷﺪﻥ ( ﺍﯾﻦ ﺩﻭ ﻣﺘﺪ ﺍﺳﺘﻔﺎﺩﻩ
ﻧﻤﺎﯾﻴﺪ .ﺑﺎﺯ ﻫﻢ ﺳﺎﺩﻩ ﺗﺮﺵ ﺍﯾﻦ ﻣﻴﺸﻪ ﮐﻪ ﺑﺮﺍی ﻣﻌﻠﻮﻡ ﺷﺪﻥ ﺩﻭ ﻣﺘﺪی ﮐﻪ ﻫﻢ ﻧﺎﻡ ﻫﺴﺘﻨﺪ ﻣﯽ ﺗﻮﺍﻧﻴﺪ ﺍﺯ ﺍﯾﻦ ﺧﺎﺻﻴﺖ ﺍﺳﺘﻔﺎﺩﻩ
ﮐﻨﻴﺪ.
ﺑﻪ ﻋﻨﻮﺍﻥ ﻣﺜﺎﻝ ﻓﺮﺽ ﮐﻨﻴﺪ ﺷﻤﺎ ﻣﯽ ﺧﻮﺍﻫﻴﺪ ﯾﮏ ﮐﻨﺘﺮﻟﺮ Productﺍﯾﺠﺎﺩ ﮐﻨﻴﺪ ﺑﺎ ﺩﻭ ﻣﺘﺪ )( . Createﮐﻪ ﺍﻭﻟﻴﻦ ﻣﺘﺪ ﺑﺮ ﻓﺮﺽ ﺑﺮﺍی
ﻗﺒﻮﻝ ﮐﺮﺩﻥ idﻭ ﺩﻭﻣﯽ ﯾﮏ ﭼﻴﺰ ﺩﯾﮕﺮ .ﺩﺭ ﺍﯾﻨﺠﺎ ﺷﻤﺎ ﻣﯽ ﺗﻮﺍﻧﻴﺪ ﺍﺯ ﺧﺎﺻﻴﺖ ActionNameﺑﺮﺍی ﺗﻤﺎﯾﺰ ﺑﺨﺸﻴﺪﻥ ﺍﯾﻦ ﺩﻭ ﻣﺘﺪ
ﺍﺳﺘﻔﺎﺩﻩ ﮐﻨﻴﺪ.
ﺩﻭﻣﻴﻦ ﺣﺎﻟﺖ ﻫﻢ ﺯﻣﺎﻧﻴﻪ ﮐﻪ ﺷﻤﺎ ﻣﯽ ﺧﻮﺍﻫﻴﺪ ﺍﺯ ﺧﺎﺻﻴﺖ ActionNameﺑﺮﺍی ﺑﻬﺒﻮﺩ ﺑﺨﺸﻴﺪﻥ ﻣﺘﺪﻫﺎی ﺧﻮﺩ ﺍﺳﺘﻔﺎﺩﻩ ﮐﻨﻴﺪ .ﺑﻪ
ﻋﻨﻮﺍﻥ ﻣﺜﺎﻝ ﺩﺭ ﮐﺪﻫﺎی ﺯﯾﺮ ﺩﻭ ﻋﻤﻠﻴﺎﺕ ﺑﺎ ﯾﮏ ﻋﻨﻮﺍﻥ )( Editﮐﻪ ﻫﺮﮐﺪﻭﻡ ﯾﮑﺴﺮی ﺍﻋﻤﺎﻝ ﺭﻭ ﺍﻧﺠﺎﻡ ﻣﯽ ﺩﻫﻨﺪ ﻭ ﯾﮑﺴﺮی ﭘﺎﺭﺍﻣﺘﺮ
ﺭﻭ ﻧﻴﺰ ﻗﺒﻮﻝ ﻣﯽ ﮐﻨﻨﺪ:
;using System.Web.Mvc
;using ToyStore.Models
namespace ToyStore.Controllers
{
public class MerchandiseController : Controller
{
;)(private MerchandiseRepository _repository = new MerchandiseRepository
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace ToyStore.Models
{
public class Merchandise
{
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace ToyStore.Models
{
public class MerchandiseRepository
{
<h2>Edit</h2>
</asp:Content>
ﻭget ﺍﻭﻟﯽ ﺑﺎ ﻣﺘﺪ. ﺍﻭﻥ ﺩﻭ ﺭﻭ ﺍﺯ ﻫﻢ ﺟﺪﺍ ﮐﺮﺩﯾﻢActionName ﺩﺍﺭﯾﻢ ﻭﻟﯽ ﯾﺎEdit() ﻫﻤﻮﻧﻄﻮﺭ ﮐﻪ ﺩﯾﺪﯾﺪ ﺩﺭ ﺍﯾﻦ ﻣﺜﺎﻝ ﻣﺎ ﺩﻭ ﻣﺘﺪ
.Post ﺩﻭﻣﯽ ﺑﺎ ﻣﺘﺪ
ﮔﺮﻭﻩ ﺁﻣﻮﺯﺵ ﻓﺎﺭﺳﻲFaEdu.ir MVC.Net ﺁﻣﻮﺯﺵ ﺑﻪ ﻫﻤﺮﺍﻩ ﭘﺮﻭژﻩ 51
ﺷﻤﺎ ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﮐﻼﺱ ﻫﺎی ﺍﯾﻦ.ﺷﻤﺎ ﻣﯽ ﺗﻮﺍﻧﻴﺪ ﻫﺮﻧﻮﻉ ﻭﯾﮋﮔﯽ ﮐﻪ ﺩﻭﺳﺖ ﺩﺍﺭﯾﺪ ﻣﻄﺎﺑﻖ ﺑﺎ ﻋﻤﻠﻴﺎﺕ ﻋﻤﻠﮕﺮ ﺑﺴﺎﺯﯾﺪ
. ﺍﯾﻦ ﮐﺎﺭ ﺭﺍ ﺍﻧﺠﺎﻡ ﺑﺪﻫﻴﺪAttribute ﺧﺎﺻﻴﺖ ﯾﺎ ﻫﻤﻮﻥ
ﺷﻤﺎ ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺍﯾﻦ. ﺍﺳﺖIsValidForRequest() ﺍﯾﻦ ﻓﻘﻂ ﯾﮏ ﻣﺘﺪ ﺍﺳﺖ ﮐﻪ ﺷﻤﺎ ﺑﺎﯾﺪ ﺍﺯ ﺁﻥ ﺍﺳﺘﻔﺎﺩﻩ ﻧﻤﺎﯾﻴﺪ ﻭ ﺍﺳﻢ ﺁﻥ
.ﻣﺘﺪ ﺷﺮﺍﯾﻂ ﺭﺍ ﺑﺮﺍی ﮐﺎﺭ ﺧﻮﺩﺗﺎﻥ ﺧﻴﻠﯽ ﺭﺍﺣﺖ ﻣﯽ ﮐﻨﻴﺪ
ﭼﻮﻥ ﻣﻴﺨﻮﺍﻡ ﺍﺯ. ﺍﯾﺠﺎﺩ ﮐﻨﻴﺪAjaxMethodAttribute ﺑﺴﺎﺯﯾﺪ ﻭ ﯾﮏ ﻓﺎﯾﻞ ﮐﻼﺱ ﺑﺎ ﻧﺎﻡSelectors ﻓﻘﻂ ﻗﺒﻠﺶ ﯾﮏ ﻓﻮﻟﺪﺭ ﺑﺎ ﻧﺎﻡ
: ﻣﺤﺘﻮﯾﺎﺕ ﺍﯾﻦ ﻓﺎﯾﻞ. ﺍﯾﻦ ﻣﺴﺌﻠﻪ ﺭﻭ ﺩﺭ ﺁﯾﻨﺪﻩ ﺩﺭﺱ ﻣﻴﺪﻡ.ﺁﺟﺎﮐﺲ ﺍﺳﺘﻔﺎﺩﻩ ﮐﻨﻢ
using System.Reflection;
using System.Web.Mvc;
namespace ToyStore.Selector
{
public class AjaxMethod : ActionMethodSelectorAttribute
{
public override bool IsValidForRequest(ControllerContext controllerContext, MethodInfo
methodInfo)
{
return controllerContext.HttpContext.Request.IsAjaxRequest();
}
}
}
ﺍﯾﺠﺎﺩ ﻣﯽ ﮐﻨﻴﻢNewsController.cs ﻃﺒﻖ ﻣﻌﻤﻮﻝ ﯾﮏ ﮐﻼﺱ ﺑﺎ ﻧﺎﻡ
ﺍﻟﺒﺘﻪ ﺗﺤﺖ ﻫﻤﺎﻥ ﺷﺮﺍﯾﻄﯽ ﮐﻪ ﻣﺎ ﺗﻌﻴﻴﻦ ﻣﯽ. ﺭﺍ ﺑﺮﺍی ﻣﺎ ﺑﺮ ﻣﯽ ﮔﺮﺩﺍﻧﺪIsAjaxRequest() ﺍﯾﻦ ﺍﻧﺘﺨﺎﺏ ﺧﻴﻠﯽ ﺳﺎﺩﻩ ﻣﻘﺎﺩﯾﺮی ﺍﺯ
.ﮐﻨﻴﻢ
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using ToyStore.Selector;
namespace ToyStore.Controllers
{
public class NewsController : Controller
{
private readonly List<string> _news = new List<string>();
private Random _rnd = new Random();
public NewsController()
{
_news.Add("Moon explodes!");
_news.Add("Stock market up 200 percent!");
_news.Add("Talking robot created!");
}
ﮔﺮﻭﻩ ﺁﻣﻮﺯﺵ ﻓﺎﺭﺳﻲFaEdu.ir MVC.Net ﺁﻣﻮﺯﺵ ﺑﻪ ﻫﻤﺮﺍﻩ ﭘﺮﻭژﻩ 52
[AjaxMethod]
[ActionName("Index")]
public string Index_AJAX()
{
var selectedIndex = _rnd.Next(_news.Count);
return _news[selectedIndex];
}
}
}
<span id="news"></span>
</asp:Content>
. ﻭﻟﯽ ﺩﺭ ﺁﯾﻨﺪﻩ ﭼﻨﺪ ﻣﻮﺭﺩ ﺭﻭ ﺑﻪ ﺍﯾﻦ ﺑﺨﺶ ﺍﺿﺎﻓﻪ ﻣﯽ ﮐﻨﻢ.ﺍﯾﻦ ﺑﺨﺶ ﺗﻤﻮﻡ ﺷﺪ